我在网上浏览寻找用于three.js
的3D世界三角测量代码。我知道有形状对象,但它只能使用2D和路径。我有外多边形,点,洞和强迫'折线。
如何处理这个和三个?我是否必须使用另一个JS框架?
我们将不胜感激,谢谢。
答案 0 :(得分:0)
您是否尝试对近平面或平面三维多边形进行三角测量?
如果你有一个近平面或平面的三维多边形,它可以通过“投射”来进行三角测量。它下降到2d,运行三角测量,然后“去投射”。回到3d。许多图书馆(例如CGAL,http://www.cgal.org)通过选择一个简单的平面' xy,yz或xz平面,向下投影,进行三角测量,然后选择'投射回来'。
诀窍在于,如果你没有添加任何新的积分,你实际上不需要重新投射项目,你只需要列出旧的3d积分。新数据结构,指示哪些属于哪些三角形。如果您的代码非常聪明,您甚至不需要转换'到2d,你只需要欺骗你的三角测量算法,例如,y是x,z是y,(假设你已投射到yz平面上)。
因此,如果你有一个接近平面的三维多边形,并且有一个好的二维三角剖分算法(三个.js'形状可能就足够了,但如果没有,也许安格斯约翰逊的Clipper的一些组合可能会帮助,特别是如果你想要整合杂散点,线等),你只需要写一点“粘合剂”。用于进行投影3d-> 2d和去投影2d-> 3d的代码。输出的方向(顺时针方向与逆时针方向)可能有点棘手,但它并不是世界上最难编程的东西。
祝你好运。