Python 如何沿3个点和一个长度给定的圆弧移动鼠标?
我目前正在编写一个程序的一部分,它可以在圆弧中移动鼠标 我得到了定义弧的三个点:起点Python 如何沿3个点和一个长度给定的圆弧移动鼠标?,python,geometry,Python,Geometry,我目前正在编写一个程序的一部分,它可以在圆弧中移动鼠标 我得到了定义弧的三个点:起点p1,弧上的中间点p2,终点p3。我还得到了弧的长度。如果length大于p1和p3所对弧的实际长度,则p3将不是弧的终点,但鼠标将继续在圆中移动,直到移动距离length 我已经算出了圆心(x,y),半径r,以及扫掠角度 要移动鼠标,我希望将angle划分为更小的间隔,每个间隔都带有angledAngle,并在扫描dAngle后在当前位置和新位置之间移动鼠标。我想到的是下面的伪代码: for i in rang
p1
,弧上的中间点p2
,终点p3
。我还得到了弧的长度。如果length
大于p1
和p3
所对弧的实际长度,则p3
将不是弧的终点,但鼠标将继续在圆中移动,直到移动距离length
我已经算出了圆心(x,y)
,半径r
,以及扫掠角度
要移动鼠标,我希望将angle
划分为更小的间隔,每个间隔都带有angledAngle
,并在扫描dAngle
后在当前位置和新位置之间移动鼠标。我想到的是下面的伪代码:
for i in range(intervals):
x = center.x + r * cos(i * dAngle)
y = center.y + r * sin(i * dAngle)
Move mouse to (x, y)
Sleep 1
但是,我在尝试参数化地查找圆弧上的新点时遇到了一些问题
我的鼠标不是从p1
开始的,而是在我假设的从鼠标到中心的线和水平线对0度角的点处,因为我没有将初始角度考虑到参数中。如何找到鼠标的初始角度
如何确定是顺时针旋转还是逆时针旋转,即x=center.x+r*cos(I*dAngle)
还是x=center.x-r*cos(I*dAngle)
如果有一种更有效的圆弧运动方式,请提出建议。您可以根据需要计算起始角度
a1 = math.atan2(p1.y-center.y, p1.x-center.x)
然后用在
x = center.x + r * cos(a1 + i * dAngle)
y = center.y + r * sin(a1 + i * dAngle)
关于方向-也许可以在计算弧中心时确定方向。若否,且弧扫描角度小于Pi(180度),只需找到表达式的符号即可
sg = math.sign((p1.x-center.x) * (p3.y-center.y) - (p1.y-center.y) * (p3.x-center.x))
并将其与悬挂一起使用
x = center.x + r * cos(a1 + i * sg * dAngle)
similar for y
注意,x=center.x-r*cos(i*dAngle)
中的负号是改变方向的错误方式