首页 > 解决方案 > 当该点在半径内时向该点移动

问题描述

作为免责声明,我是 Python 新手。

(这是在 graphics.py 中)

我在飞机上有两个点。一个点“a”是一个圆点。目前它们看起来类似于这样:

在此处输入图像描述

假设点“a”在一条轨迹上移动,该轨迹将导致圆接触另一点。我的目标是一旦另一个点在围绕点“a”的圆的范围内,就让点“a”开始向另一个点移动,有点像这种情况:

在此处输入图像描述

还应该注意,点“a”是唯一被认为在移动的点。

最终,我希望这些要点能够触及。

我有办法做到这一点吗?我目前能想到的一种可能的解决方案是让点“a”移动到另一点所在的(x,y)坐标,但这意味着点“a”不会移动到另一点,因为圆与另一点接触。

任何和所有的帮助表示赞赏!

标签: pythongeometry

解决方案


这是一些伪代码

if (a.x-b.x)**2 + (a.y-b.y)**2 <= a.radius**2:
   vec_a_b = b-a  # or you can do this component wise  
   a.velocity = normalized(vec_a_b)*a.velocity.magnitude

这假设点a有一个速度向量,它编码了它当前的方向和它的速度。
现在您可以使用速度移动a

a.x += a.velocity.x
a.y += a.velocity.y

推荐阅读