是否有这样的算法按顺时针顺序对3D点阵列进行排序? 在我的情况下我特别处理直角三角形,所以只有3分。 (用于构建网格)
答案 0 :(得分:1)
假设您有两条边连接三个顶点。
E1 = V2 - V1
E2 = V1 - V3
它们跨越三角形。您可以像这样计算三角形的正常N
:
N = cross(E1, E2)
这会告诉您三角形朝向哪个方向。您可以通过将P
投影到距离N
的三角形距离来计算三角形是朝向还是远离某个视点P
。
D = V1 - P
d = dot(N, D)
如果d
为正数,则三角形偏离P
,如果为负,则面向P
。
您现在可以判断每组(V1,V2,V3)是否正确排序。如果没有,只需交换V2和V3即可。
但有一个陷阱。如果您正在尝试构建封闭网格的船体,则要求所有三角形都朝向外部。这不能通过尝试使所有三角形面向某个点来建模,因为对于每个三角形,该点必须是不同的。如果网格是凸透的,则可以通过要求所有三角形从某个点(位于凸网格内部)中面向远来对其进行建模。
答案 1 :(得分:0)
排序算法并不困难。问题是,那些点在哪个平面上。它面向哪一方
只有一堆点本身不能顺时针或逆时针。你需要一个平面和一个侧面来引用这些点
编辑:实际上我以前说的有点不准确。你真正需要的是参考的位置和方向,而不是平面