gpt4 book ai didi

java - 圆-圆碰撞预测(后续)

转载 作者:行者123 更新时间:2023-12-02 11:10:10 28 4
gpt4 key购买 nike

圆 A 沿 x 轴向右移动。圆 B 沿 y 轴向上移动。我想知道他们是否会发生碰撞。 (不是何时,只是如果。)

半径相同,恒速度不同。

This answer似乎解决了这个问题,我的问题最好应该是这个问题的后续问题。 (抱歉没有足够的声誉来发表评论。)

我似乎无法求解所提供的方程 t(时间)(如果 t 存在,圆圈将发生碰撞):

(Oax + t*Dax - Obx - t*Dbx)^2 + (Oay + t*Day - Oby - t*Dby)^2 = (ra + rb)^2

这里再次以可读的方式:

(CircleA.initialPosition.x + t*CircleA.velocity.x - 
CircleB.initialPosition.x - t*CircleB.velocity.x)^2
+
(CircleA.initialPosition.y + t*CircleA.velocity.y -
CircleB.initialPosition.y - t*CircleB.velocity.y)^2
=
(CircleA.radius + CircleB.radius)^2

在我的例子中,这有点简单,因为圆沿着轴移动(一个轴上的速度为 0)并且半径相同:

(CircleA.initialPosition.x + t*CircleA.velocity.x - 
CircleB.initialPosition.x)^2
+
(CircleA.initialPosition.y - CircleB.initialPosition.y -
t*CircleB.velocity.y)^2
=
(2*radius)^2

我仍然无法解决它,并且提供了指向auto-solver的链接对我的头脑也没有帮助。

(特别是我不明白

sqrt(-(D4 - D3)^2)

sqrt() 内部的表达式始终为负数,因此它总是失败。我错过了什么?)

除了自动求解器之外,我希望有人能够展示解决 t 方程的方法(也许主持人可以合并这些问题,抱歉给您带来麻烦)。

或者,任何其他方法来解决这个问题,也许使用我不知道的内置 box2d 功能。

最佳答案

接受的解决方案缺少一些东西。为了求解这个方程:

x = (−b ± sqrt(b^2 - 4ac)) / 2a

这意味着:

x1 = (−b + sqrt(b^2 - 4ac)) / 2ax2 = (−b - sqrt(b^2 - 4ac)) / 2a

至少 x1 或 x2 需要才能正确检测到碰撞。如果两者都是负数,则不会发生碰撞。

关于java - 圆-圆碰撞预测(后续),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50663909/

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