java - 3D 高度图地形和碰撞检测

标签 java math 3d

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 ab,其分量分别为a1、a2、a3和b1、b2、b3,叉积为:

enter image description here

这将转到:

enter image description here

A = i-hat 的系数(粗体 i)

B = j-hat 的系数(粗体 j)

C = k-hat 的系数(粗体 k)

关于java - 3D 高度图地形和碰撞检测,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12416195/

相关文章:

java - 有没有一种方法可以使用 Function< 将多个方法减少为一个方法? super T, ?> 作为方法参数?

java - 使用 java 遍历 CIDR 中的所有 IP 地址

objective-c - iPhone 计算器教程帮助,十进制样式..再次

math - 数学计算简单的图形管线

python - Pygame 缩放健康栏

3d - 如何有效地旋转和平移 3D 平面

java - 在 Java 中更新 BigQuery 架构/添加新列

java - 使用 Java 调用 AWS Lambda 上的 Web 服务

python - 将具有多个元素的列表转换为具有多列的数据框

javascript - 为什么 .obj 对定向光没有反应? [三.js]