2
在y向上/向下的坐标系中,z向前/向后,x向左/向右(如在Unity3D中)。如何在3D三角形的给定点(x,z)找到y?
(这里是我的意思不好图)
Ÿ
|
| _ __ _x
\
ž
(Z将进入/你的显示器我猜)
由于坐标(X,Z),这是保证是在这个三角形上,我将如何获得y?假定您知道所有三个三角形点的(x,y,z)坐标以及脸部的法线。三角形可以在任何轴上倾斜。
在y向上/向下的坐标系中,z向前/向后,x向左/向右(如在Unity3D中)。如何在3D三角形的给定点(x,z)找到y?
(这里是我的意思不好图)
Ÿ
|
| _ __ _x
\
ž
(Z将进入/你的显示器我猜)
由于坐标(X,Z),这是保证是在这个三角形上,我将如何获得y?假定您知道所有三个三角形点的(x,y,z)坐标以及脸部的法线。三角形可以在任何轴上倾斜。
好吧,给定任意向量v
你的三角形内,你的正常n
,我们知道的n
和v
点积(上三角形适用于所有的点)等于0。所以说:尽管
vy = -((nz * vz) + (nx * vx))/ny
一件事:
nx * vx + ny * vy + nz * vz = 0
小代数求解vy
,我们有。 v
必须位于三角形的平面中,因此您需要将该矢量放在三角形的平面中,方法是从v
减去一个顶点(如t1
)。
所以:
vx = t1x - x, vz = t1z - z, and vy = t1y - y
也因此,您的最终y坐标为:y = t1y - vy
其中vy
如上定义。
你能否定义Vector在三角形内的含义?那是(x,z)坐标,(x,y,z)坐标,还是一个方向上的矢量? 我了解基本概念,但我并不是最新的数学术语。你在第一部分失去了我。为什么我会从v中减去一个顶点?你能否向我解释,好像我是一个大孩子? – ATD
't1'是三角形三个顶点中的任意*。 'v'必须是一个与你的法线正交的向量,以便点积为零。你已经有't1','x','z'和你的正常:'n'。将你的值代入上面的公式将会给你你想要的'y'。 –
从't1'中减去'{x,y,z}'确保结果矢量'v'与你的法线正交。 –