将三角形三角化为网格

时间:2014-04-28 21:16:08

标签: geometry rendering tessellation

是否存在将可能跨越多个网格元素的三角形划分为多个三角形的算法,其中没有跨越多个网格元素的三角形?

我在2x2网格中包含了一个蹩脚的三角形手绘图,被切成七个较小的三角形。

Before and after

2 个答案:

答案 0 :(得分:1)

我这样看:


你的三角形是3行闭合多边形
点数顺序为您提供上弦规则( CW CCW

  1. 按网格线切割所有行

    但仍然将三角形保留为单个闭合多边形,并且不会更改绕组

  2. 将多边形拆分为几个行列表

    将所有属于同一网格单元的行组合在一起,以便所有点都位于单元格的内部或边缘。再次不要改变缠绕!!!

  3. 将广告系列列表转换为已关闭的多边形

    从第一行列表中的第一行开始。如果它正在加入实际列表中的任何行继续它。如果没有,则继续沿相同卷绕方向的单元边缘线,直到达到另一个线点或单元角。

    重复此操作,直到为此单元格形成闭合多边形(命中已使用的线/点))。以同样的方式处理其他单元格

  4. 现在您已关闭凸多边形列表

    所以只需将其拆分为三角形(三角扇)

  5. triangle to grid

答案 1 :(得分:0)

看到我之外的其他人也曾经尝试过这一点,这真的很令人耳目一新(我一直在用OpenGL编写一个引擎,可以根据这个概念构建地形,但是也可以将其放在3d中)。

话虽如此,Spektre的钱是对的。我的引擎遵循几条与他相似的规则:

  • 粘在CW或CCW绕组上(我正在使用CW)

  • 只有三角形被我分解成更小的三角形,所以它们都是凸的-因此没有凹多边形。

  • 用于检测将拆分为三角形的数量的公式为N - 2,其中N是单元格中的点数。显然,如果它是3,则您有一个完美的三角形(例如上方网格单元中的蓝色三角形)

稍后我会尝试为您上传一些图片。希望您仍在努力或至少取得了进展!