gpt4 book ai didi

algorithm - 两个移动矩形之间的最小距离

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:40:49 25 4
gpt4 key购买 nike

二维空间中有两个移动的矩形A和B。

  • 最初矩形的中心是 (x_A, y_A) 和 (x_B, y_B)。
  • 宽度和长度分别是w_A, h_A, w_B, h_B。
  • 速度为 (v_Ax, v_Ay), (v_Bx, v_By)。
  • 较长边与速度之间的角度为 θ_A、θ_B。换句话说,θ 是矩形需要逆时针旋转的角度,以便较长的边缘与速度平行。 (见下图)。

问题是:

  1. 检查两个矩形在移动时是否会发生碰撞;

  2. 如果没有碰撞,最小距离是多少(矩形的任意两点之间)。

enter image description here

类似的问题有:How to check intersection between 2 rotated rectangles?Collision detection between two rectangles in java然而,他们只考虑静态矩形。

谢谢!

最佳答案

使用伽利略原理简化问题。在与第一个矩形相连的虚拟移动坐标系中工作。

在该系统中,第一个矩形中心是 (0, 0),它的第一个角坐标是 (w/2*Cos(θ_A)-h/2*Sin(θ_A) , w/2*Sin(θ_A)+h/2*Cos(θ_A)) 等等

第二个矩形初始中心是 (X_B-X_A, Y_B-Y_A) 并且具有速度 (v_Bx -v_Ax, v_By-v_Ay)。角坐标可以用相同的方式计算。

为了检查碰撞,为第一个矩形的边建立方程式 (Ax+By+C=0) 并找出第二个矩形的角是否曾经位于这些线段上(点位于在矩形边缘上,如果它的坐标被替换到该边缘方程中,给出零符号,并为相邻边缘方程给出不同的符号)

要找到最小距离,您可以根据时间编写角点之间平方距离的表达式,并通过解析找到最小值(通过零导数)

关于algorithm - 两个移动矩形之间的最小距离,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44006779/

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