Gam*_*ver 20 math 3d pseudocode
我正在尝试采用一系列3D点和一个平面,并根据它们所在平面的哪一侧将点分成2个阵列.在我进行大量调试之前,我想发布我正在计划做的事情,以确保我对如何做到这一点的理解能够奏效.
基本上我有3分的飞机,我使用(伪代码):
var v1 = new vector(plane.b.x-plane.a.x, plane.b.y-plane.a.y, plane.b.z-plane.a.z);
var v2 = new vector(plane.c.x-plane.a.x, plane.c.y-plane.a.y, plane.c.z-plane.a.z);
Run Code Online (Sandbox Code Playgroud)
我取这两个向量的交叉乘积来得到法向量.
然后我循环遍历我的点阵并将它们转换为向量并根据法线计算点积.
然后我使用点积来确定该点所在的一侧.
这听起来像它会起作用吗?
Ali*_*Ali 25
让我们a*x+b*y+c*z+d=0
确定你的飞机.
将[x,y,z]
点的坐标替换为等式的左侧(我的意思是a*x+b*y+c*z+d
)并查看结果的符号.
具有相同符号的点位于平面的同一侧.
老实说,我没有检查你写的内容的细节.我想你同意我的建议更简单.