Python 当所述点在半径范围内时向一点移动

Python 当所述点在半径范围内时向一点移动,python,geometry,Python,Geometry,作为免责声明,我是Python新手 (这是在graphics.py中) 平面上有两点。一个点“a”是一个圆点。目前,它们看起来与此类似: 假设点“a”在轨迹上移动,该轨迹将使圆接触到另一点。 我的目标是让点“a”在另一点位于围绕点“a”的圆的边界内时开始向另一点移动,类似于这种情况: 还应注意的是,点“a”是唯一一个假定正在移动的点 归根结底,我希望这些要点能够触及 我有办法做到这一点吗?我目前能想到的一个可能的解决方案是让点“a”移动到另一点所在的(x,y)坐标,但这意味着点“a”不会移动

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

(这是在graphics.py中)

平面上有两点。一个点“a”是一个圆点。目前,它们看起来与此类似:

假设点“a”在轨迹上移动,该轨迹将使圆接触到另一点。 我的目标是让点“a”在另一点位于围绕点“a”的圆的边界内时开始向另一点移动,类似于这种情况:

还应注意的是,点“a”是唯一一个假定正在移动的点

归根结底,我希望这些要点能够触及

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


感谢您的任何帮助

这里有一些伪代码

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
的运动?你能解释一下
normalize(vector\u a\u b)*a.speed
在这里做了什么吗?
normalized()
给出了一个方向和大小相同的新向量,如果你已经有了方向(作为单位向量),你可以使用它
normalized(vec\u a\b)*a、 速度
使点
a
以其当前速度朝着新的方向移动,指向点
b
,这更有意义!另一方面,在
vector\u a\u b=b-a
中,由于
a
b
是点,所以
\u sub\u
操作符不起作用,对吗?这就是为什么我说它是伪代码,它可以以多种不同的方式实现。最简单的选择是使用某种向量库。或者只是做一些辅助函数来做减法之类的事情
a.x += a.velocity.x
a.y += a.velocity.y