【问题标题】:Find intersection by knowing a point, direction, circle position and radius (2D)通过知道点、方向、圆位置和半径 (2D) 来查找交点
【发布时间】:2021-10-14 01:54:13
【问题描述】:

#问题

嘿,我想知道我们如何找到一个点与矢量方向的交点,假设该点在圆中。 换句话说,当我知道以下内容时,如何找到粒子将撞击圆圆周的位置:圆的位置、半径、粒子位置和方向(速度)。

#实现

我目前正在创建一个飞行雷达,所有航班都存储在一个队列中,我需要根据航班离开圈子的时间(雷达半径)对队列进行排序 所以我需要返回一个点,这样我就可以得到距离并根据距离和速度计算时间。

【问题讨论】:

    标签: math


    【解决方案1】:

    首先减去中心坐标以简化计算(现在圆心是坐标原点)

    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
    

    【讨论】:

      猜你喜欢
      • 2015-07-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-10-17
      • 1970-01-01
      • 2017-01-16
      • 1970-01-01
      相关资源
      最近更新 更多