如何删除线框对角线?

时间:2014-12-06 10:43:44

标签: javascript math 3d three.js

我为CAD软件编写了一个自定义导出器,用于将几何数​​据导出到ThreeJS编辑器。现在,当然在ThreeJS中我写了一个正确的加载器,它正确地加载了所有的几何体。

只有一个问题;在ThreeJS的线框视图中,我从每个顶点都有三角形。使用什么技术可以移除三角测量和对角线?如何在没有对角线的情况下显示线框?

来源3D: image

ThreeJS 3D :(见三角形和diagonales) image

1 个答案:

答案 0 :(得分:0)

看起来您将所有点/多边形绘制为单个折线

  • 这是不正确的,您应该将每个多边形处理为线环
  • 如果您的网格是三角形或三边形,那么您需要提取周边线

提取周边线

  1. 如果您的网格未由多边形定义,则需要将所有连接的基元分组为单个多边形
  2. 从列表中的单个多边形获取所有行
  3. 找到重复的行并将其全部删除
    • 所以使用相同点(按任何顺序)的所有行都是重复的
    • 连接的原语共享相同的边缘
    • 所以这对于正确的三角形多边形来说已经足够了
  4. 一些三角测量只能通过线路而不是点
    • 对于这些,您需要比较所有剩余的行
    • 取所有平行线(相同或相反的角度)
    • 并测试它们是否位于同一行
    • 如果是,则连接(重叠)
    • 然后剪切线条以便重叠的部分将被删除
  5. 错误的三角测量

    • 如果图元重叠而不是连接
    • 然后将单个多边形绘制为已清除的缓冲区
    • 然后处理所有行
    • 计算每个
    • 的中间点
    • 并测试坐标是否填充在缓冲区中
    • 如果删除该行
    • 这不是100%防弹
    • 你应该在每一行测试更多的分数
    • 如果有些人进去,有些人只是找到了交叉点而只切入了内部部分
    • 你也可以使用矢量方法进行内部测试,但你必须处理多个重叠