gpt4 book ai didi

c# - 如何判断三角形的三个顶点是循环顺序还是反循环顺序?

转载 作者:太空宇宙 更新时间:2023-11-03 12:51:22 25 4
gpt4 key购买 nike

我的目标是检查STL文件中三角形的法线方向是否一致??

例如。STl 文件如下,我想检查所有面都在同一方向,即向外。??

小平面正常 0 0 -1

outer loop
vertex -20.5411 -4.36615 0
vertex -16.9894 -12.3435 0
vertex -19.1845 -8.54147 0
endloop

端面

小平面正常 -0.994522 0.104528 0

outer loop
vertex -21 0 0
vertex -21 0 2
vertex -20.5411 4.36615 0
endloop

端面

我想通过顶点的叉积来计算法线,但我怎么知道方向呢??

我读到“循环单位向量的叉积是正的。”但是我应该如何在我的问题中使用这个规则??

谁能帮帮我??我真的被困在这里:(

最佳答案

检查法线的点积和 2 个边方向的叉积的符号,例如给定正常的 N 和点 ABC:

((B - A) x (C - A)) * N

叉积应产生与法线方向相同的向量,因为 2 个向量 ST 的点积是

S * T = |S| * |T| * cos(theta)

其中 theta 是向量之间的角度,当且仅当方向正确时,它应该为正。 (这里假设三角形中没有2个点在同一位置)

Java 代码示例(使用 javafx.geometry.Point3D ):

boolean check(Point3D normal, Point3D p1, Point3D p2, Point3D p3) {
return p2.subtract(p1)
.crossProduct(p3.subtract(p1))
.dotProduct(normal) > 0;
}

关于c# - 如何判断三角形的三个顶点是循环顺序还是反循环顺序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35406129/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com