【发布时间】:2021-10-14 01:54:13
【问题描述】:
#问题
嘿,我想知道我们如何找到一个点与矢量方向的交点,假设该点在圆中。 换句话说,当我知道以下内容时,如何找到粒子将撞击圆圆周的位置:圆的位置、半径、粒子位置和方向(速度)。
#实现
我目前正在创建一个飞行雷达,所有航班都存储在一个队列中,我需要根据航班离开圈子的时间(雷达半径)对队列进行排序 所以我需要返回一个点,这样我就可以得到距离并根据距离和速度计算时间。
【问题讨论】:
标签: math
#问题
嘿,我想知道我们如何找到一个点与矢量方向的交点,假设该点在圆中。 换句话说,当我知道以下内容时,如何找到粒子将撞击圆圆周的位置:圆的位置、半径、粒子位置和方向(速度)。
#实现
我目前正在创建一个飞行雷达,所有航班都存储在一个队列中,我需要根据航班离开圈子的时间(雷达半径)对队列进行排序 所以我需要返回一个点,这样我就可以得到距离并根据距离和速度计算时间。
【问题讨论】:
标签: math
首先减去中心坐标以简化计算(现在圆心是坐标原点)
x11 = x1 - x0
y11 = y1 - y0
点位置对时间是
x = x11 + vx * t
y = y11 + vy * t
vx, vy 是速度的组成部分
点在圆周上
x^2 + y^2 = R^2
所以
(x11 + vx * t)^2 + (y11 + vy * t)^2 = R^2
(vx^2+vy^2)*t^2 + (2*vx*x11+2*vy*y11)*t + (x11^2+y11^2-R^2) = 0
这是未知t 的二次方程。解决它,找到根 - 没有用于外部移动,一个用于单点触摸情况,两个用于常规交叉点 - 较大的一个需要交叉时间t_int
将t代入点位置方程得到坐标:
x_int = x1 + t_int * vx
y_int = y1 + t_int * vy
【讨论】: