Java 3d heightmap地形和碰撞检测
三维地形 我有3个顶点定义一个平面。(高度贴图中最近的3个像素) 我在那架飞机上有一个x,z。(我在世界上的位置)Java 3d heightmap地形和碰撞检测,java,math,3d,Java,Math,3d,三维地形 我有3个顶点定义一个平面。(高度贴图中最近的3个像素) 我在那架飞机上有一个x,z。(我在世界上的位置) 你怎么找到y截距?(这样我就站在那个平面的表面上)平面的方程是: Ax+By+Cz=D,其中D=Ax0+By0+Cz0 如果有三个顶点,则从这些顶点查找两个向量。例如,对于三个顶点T、U、V,例如将有一个向量TU,和一个向量UV 求两个向量的叉积。这是法向量,n,它有三个分量n1、n2和n3 A = n1 B = n2 C = n3 拿其中一点来说。该点的坐标为x0、y0和z0
你怎么找到y截距?(这样我就站在那个平面的表面上)平面的方程是: Ax+By+Cz=D,其中D=Ax0+By0+Cz0 如果有三个顶点,则从这些顶点查找两个向量。例如,对于三个顶点T、U、V,例如将有一个向量TU,和一个向量UV 求两个向量的叉积。这是法向量,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
如果我的代数错了,有人纠正我
可以这样计算叉积:
对于分量分别为a1、a2、a3和b1、b2、b3的两个向量a和b,叉积为:
这是为了:
A=i-hat的系数(粗体i)
B=j-hat的系数(粗体j)
C=k-hat的系数(粗体的k)你说你在看高度贴图中最近的三个像素,这让我假设你有一个规则的网格,你可以从中提取顶点。在这种情况下,您可以使用图像插值方法来执行与eboix或插值中的答案类似的操作。然后,高度值与图像处理域中的亮度值相等。 在线性情况下,数学要容易得多,网格结构使使用简单形式成为可能。让c表示单元大小,p,q,r表示3个顶点的高度值,如下所示
p q
+--.
| /
|/
r
和x,y是沿着直角三角形腿的距离。其中三角形当然是三个顶点在x,y平面上的投影。然后,插值的高度值为
z = (q-p)/c * x + (r-q)/c * y