2014-01-30 217 views
2

在y向上/向下的坐标系中,z向前/向后,x向左/向右(如在Unity3D中)。如何在3D三角形的给定点(x,z)找到y?


(这里是我的意思不好图)

Ÿ
|
| _ __ _x
\
ž

(Z将进入/你的显示器我​​猜)


由于坐标(X,Z),这是保证是在这个三角形上,我将如何获得y?假定您知道所有三个三角形点的(x,y,z)坐标以及脸部的法线。三角形可以在任何轴上倾斜。

回答

3

好吧,给定任意向量v你的三角形内,你的正常n,我们知道的nv点积(上三角形适用于所有的点)等于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如上定义。

+0

你能否定义Vector在三角形内的含义?那是(x,z)坐标,(x,y,z)坐标,还是一个方向上的矢量? 我了解基本概念,但我并不是最新的数学术语。你在第一部分失去了我。为什么我会从v中减去一个顶点?你能否向我解释,好像我是一个大孩子? – ATD

+0

't1'是三角形三个顶点中的任意*。 'v'必须是一个与你的法线正交的向量,以便点积为零。你已经有't1','x','z'和你的正常:'n'。将你的值代入上面的公式将会给你你想要的'y'。 –

+0

从't1'中减去'{x,y,z}'确保结果矢量'v'与你的法线正交。 –

相关问题