Java 检测两个三维平面之间的碰撞
我正在用lwjgl用java编写一个游戏。基本上我有两个计划,我想检查它们是否相交,如下图所示Java 检测两个三维平面之间的碰撞,java,3d,lwjgl,collision,Java,3d,Lwjgl,Collision,我正在用lwjgl用java编写一个游戏。基本上我有两个计划,我想检查它们是否相交,如下图所示 我有每架飞机的四个点,有人能帮我吗。我不能证明这是足够的,但我相信这三个测试应该足够了: 两架飞机 将每个平面投影到x轴上,检查是否有重叠 将每个平面投影到y轴上,检查是否有重叠 将每个平面投影到z轴上,检查是否有重叠 如果这三种情况中的任何一种都没有重叠,则平面不相交。否则,, 两个平面相交 如果您不确定如何投影到轴上或计算重叠,请告诉我。另外,如果这三项测试不够,请告诉我 编辑1: 算法:你实际
我有每架飞机的四个点,有人能帮我吗。我不能证明这是足够的,但我相信这三个测试应该足够了: 两架飞机
实际上,您需要检查更多的轴。如果两个平面平行(而不是同一平面),则这两个平面不相交 让
p1
、p2
、p3
和p4
作为定义平面的4个点,n=(a,b,c)
计算为n=交叉(p2-p1,p3-p1)
的法向量。平面方程是
ax + by + cz + d = 0
其中d=-dot(n,p1)
你有两架飞机
ax + by + cz + d = 0
a’x + b’y + c’z + d’ = 0
它们是平行的(且不相同)
当您实现此谓词时,您必须检查被0除的可能重复项。。。我想我理解这个概念,但我如何投影到轴上并计算重叠。谢谢:)对不起,我认为应该是x-y、x-z和y-z平面,而不是x-y和z轴。让我想想如何做这些投影和重叠,如果我想到的话,我会让你知道的。实际上,不管是平面。当我回顾一本书的时候,它实际上是轴,我已经加入了书中的方法基本上说的内容。这不起作用。这会起作用,但因为第二个平面是倾斜的,所以不起作用。斜平面被视为一个立方体。谢谢你。我会像你说的那样研究矩阵。是的,我意识到你需要更多的轴。我做了盒子和盒子的碰撞,也许,你可以把飞机当作一个非常薄的盒子。这将需要15个轴进行测试。这都是假设你的平面不是无限平面,对吗?
a/a’ == b/b’ == c/c’ != d/d’