作者热门文章
- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我想在两组多边形之间进行三角剖分。一组总是在另一组内,事实上,外部多边形是作为原始组的偏移量创建的。如果它们在同一平面上,三角测量会很容易,但我想通过将外部多边形移动到平行但不同的平面来增加深度。我使用的常用三角测量方法 (glu tesselator) 不起作用。有替代方案吗?
最佳答案
您是说您有一种适用于 2D 的三角测量方法。美好的。将两个轮廓放在同一平面上 z = 0
,进行二维三角剖分,然后将外部轮廓顶点的 z
坐标设置为您需要的值。如您所说,将外轮廓移动到平行平面。
为什么这种方法不适合您?
是的,您最终可能会得到一些水平三角形,它们的三个顶点都具有相同的 z
坐标。如果您使用“真正的”3D 三角测量,您也可能会得到相同的水平三角形。这完全取决于轮廓的形状和算法。
如果不能接受这样的水平三角形,您可以添加第二遍以尝试消除它们:
找到一个水平三角形。它的两条边将属于原始内部或原始外部轮廓。第三条边将“短路”原始轮廓的顶点。找到与上述“第三条”边具有相同边的另一个三角形。这些三角形对形成一个菱形。只有两种方法可以对菱形进行三角剖分。你得到的那个是 Not Acceptable ,所以只需用不同的方式重新对菱形进行三角剖分。
没有图很难解释。
关于c++ - 不同平面上的多边形之间的三角剖分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27368677/
我是一名优秀的程序员,十分优秀!