Python 使用Pyautogui自上而下绘制圆
我想使用Pyautogui,用鼠标从上到下创建一个半圆。目前,我正在使用一个从右到左或从左到右的脚本。但是我无法使脚本自上而下地工作。这是当前的脚本Python 使用Pyautogui自上而下绘制圆,python,geometry,mouse,pyautogui,Python,Geometry,Mouse,Pyautogui,我想使用Pyautogui,用鼠标从上到下创建一个半圆。目前,我正在使用一个从右到左或从左到右的脚本。但是我无法使脚本自上而下地工作。这是当前的脚本 import pyautogui import math R = 40 (x,y) = pyautogui.size() (X,Y) = pyautogui.position(580,311) pyautogui.moveTo(X+R,Y) pyautogui.mouseDown(); for i in range(180): i
import pyautogui
import math
R = 40
(x,y) = pyautogui.size()
(X,Y) = pyautogui.position(580,311)
pyautogui.moveTo(X+R,Y)
pyautogui.mouseDown();
for i in range(180):
if i%6==0:
pyautogui.moveTo(X+R*math.cos(math.radians(i)),Y+R*math.sin(math.radians(i)))
pyautogui.mouseUp()
所以现在它转到位置,加上半径,然后开始画圆。我希望它在顶部添加半径并开始向下绘制。我知道如何在顶部添加半径,但向下绘制很困难。所以如果有人能帮上忙那就太好了
谢谢,
GetRektOrElse你好,GetRektOrElse 首先,我想为我糟糕的代码样式道歉,我主要是一名数学家,对样式不是很熟悉 我采用了一种不同的方法来解决这个问题,使用笛卡尔坐标系中的圆方程:
(x**2-a)+(y**2-b)=r**2
,其中点(a,b)是圆的中心,r是圆的半径。通过重新排列这个方程,你可以找到一个x的公式,用y表示:sqrt((r**2)-(y-b)**2))+a
。通过迭代y的整数值,该方程可用于在每个像素行上找到x的相关值,从中可以绘制圆
我相信这种方法比您使用的方法更直观,并且对于将来可能要进行的其他转换更通用
import pyautogui
import math
r = 36
centrex = 2778
centrey = 505
y = centrey - r
x = math.sqrt((r ** 2) - ((y - centrey) ** 2)) + centrex
oldx = x
oldy = y
for i in range(r):
pyautogui.moveTo(x, y)
x = math.sqrt((r ** 2) - ((y - centrey) ** 2)) + centrex
pyautogui.dragTo(x, y)
tempx = centrex - math.sqrt((r ** 2) - ((y - centrey) ** 2))
tempoldx = centrex - math.sqrt((r ** 2) - ((oldy - centrey) ** 2))
pyautogui.moveTo(tempoldx, oldy)
pyautogui.dragTo(tempx, y)
pyautogui.dragTo(x, y) # comment this line if you want to disable fill
oldx = x
oldy = y
y = y + 1
我想再次道歉,我确信这段代码是多么恶心,但是它以我上面描述的方式执行了您想要的功能。如果您有任何问题,请随时提问,并感谢您提出如此有趣的问题
希望你身体健康
巴巴塔利翁啊,哇。我感到很遗憾,还没有人回答你。我也在想类似的事情。祝你好运