如何在3D三角形的给定点(x,z)找到y?

时间:2014-01-30 00:56:03

标签: c# unity3d geometry

在y为上/下的坐标系中,z为前/后,x为左/右(如Unity3D中所示)。


(这是我的意思的糟糕图纸)

ÿ
|
|的 _ __ _x
\
ž

(我想,z会进入/离开你的显示器)


给定保证在这个三角形上的坐标(x,z),我怎么得到y?假设您知道所有三个三角形点的(x,y,z)坐标,以及面部的法线。三角形可以在任何轴上倾斜。

1 个答案:

答案 0 :(得分:4)

好吧,如果你的三角形里面有任何Vector v,而你的正常n,我们知道nv的点积等于0(对于所有三角形上的点)。所以:

nx * vx + ny * vy + nz * vz = 0

要解决vy的小代数,我们有:

vy = -((nz * vz) + (nx * vx)) / ny

但有一件事。 v必须位于三角形的平面中,因此您需要将该矢量放在三角形平面中,方法是从t1中减去一个顶点(比如v)。

所以:

vx = t1x - x, vz = t1z - z, and vy = t1y - y

因此,您的最终y坐标为:y = t1y - vy,其中vy定义如上。