gpt4 book ai didi

java - 检测两个 3d 平面之间的碰撞

转载 作者:行者123 更新时间:2023-12-04 04:48:25 26 4
gpt4 key购买 nike

我正在用 lwjgl 用 java 编写游戏。基本上我有两个计划要检查它们是否相互交叉,如下图所示。

enter image description here

我有每架飞机的四分,有人可以帮助我。

最佳答案

我不能证明这是足够的,但我相信这三个测试应该足够了:

两架飞机...

  • 将每个平面投影到 x 轴上,检查是否有重叠
  • 将每个平面投影到 y 轴上,检查是否有重叠
  • 将每个平面投影到 z 轴上,检查是否有重叠

  • 如果这三种情况中的任何一种都没有重叠,则平面不会相交。否则,
    平面相交。

    如果您不确定如何投影到轴上或计算重叠,请告诉我。另外,如果这三个测试不够,请告诉我。

    编辑1:

    算法:您实际上不必进行投影,而只需找到最大范围即可。我们以 x 轴为例。您找到平面 1 上的最小 x 值和平面 1 上的最大 x 值。接下来,您找到平面 2 上的最小 x 值和平面 2 上的最大 x 值。如果它们的范围重叠(例如, [1 , 5] 与 [2 , 9] ) 重叠,然后与 x 轴上的投影重叠。请注意,如果您的平面线段的边缘与 x 轴不平行,则查找 x 值的范围可能并不容易。如果您正在处理没有平行于轴的边缘的更复杂的平面段,那么我真的无能为力。您可能必须使用其他类似矩阵的东西。

    顺便说一下,该测试称为分离轴测试。我认为 x、y 和 z 轴测试应该足以测试相交的平面段。

    来源:(书籍)游戏物理引擎开发:如何为您的游戏构建强大的商业级物理引擎(第二版),作者:Ian Millington

    编辑2:

    实际上,您需要检查更多轴。

    关于java - 检测两个 3d 平面之间的碰撞,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17815312/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com