3d 地形。
我有 3 个顶点来定义一个平面。 (高度图中最近的 3 个像素)
我在那架飞机上有一个 x,z。 (我在世界上的位置)
如何求 y 轴截距? (这样我就站在那个平面的表面上)
最佳答案
平面方程为:
Ax + By + Cz = D,其中 D = Ax0 + By0 + Cz0,
如果有三个顶点,从这些顶点中找到两个 vector 。例如,对于三个顶点 T、U、V,将有一个 vector TU 和一个 vector UV。
求两个 vector 的叉积。这就是法 vector n,它具有三个分量 n1、n2 和 n3。
A = n1
B = n2
C = n3
取其中一点。该点的坐标为 x0、y0 和 z0。
将其输入方程以计算 D。
然后用你的 x 和 z 代替 x 和 z 并求解 y!
所以最终 y 是:
y = (A*x0 + B*y0 + C*z0 - A*x - C*z)/B
如果我的代数错误,有人纠正我。
您可以这样计算叉积:
对于两个 vector a和b,其分量分别为a1、a2、a3和b1、b2、b3,叉积为:
这将转到:
A = i-hat 的系数(粗体 i)
B = j-hat 的系数(粗体 j)
C = k-hat 的系数(粗体 k)
关于java - 3D 高度图地形和碰撞检测,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12416195/