gpt4 book ai didi

python - Tkinter:在没有 create_oval 的情况下在 Canvas 上画一个圆圈

转载 作者:太空宇宙 更新时间:2023-11-03 15:38:00 26 4
gpt4 key购买 nike

我想逐点绘制一个圆,因此不使用canvas.create_oval(),而是使用公式x^2 + y^2 = r。圆也必须画在正方形内。

这是代码:

center = (maxx - ((maxx - minx) / 2), maxy - ((maxy - miny) / 2))
radius = ((maxx - minx) / 2 + (maxy - miny) / 2) / 2

for xc in range(0, x):
for yc in range(0, y):
if radius - 10 <= (xc - center[0]) ** 2 + (yc - center[1]) ** 2 <= radius + 10:
canvas.create_oval(xc + 50, yc + 50, xc + 50, yc + 50)
  • (maxx, maxy) 和 (minx, min) 用于绘制矩形(使用 canvas.create_rectangle)

  • x和y是 Canvas 的宽度和高度

  • canvas.create_oval(xc + 50, yc + 50, xc + 50, yc + 50) 仅用于模拟点,因为在 tkinter 中不存在类似 < em>canvas.create_point

问题是出来的圆圈和我想象的完全不一样。 (不要关心手绘的圆圈。

x = 400,y = 300,minx = 103,maxx = 269,miny = 62,maxy = 212,中心 = (186.0, 137.0),半径 = 79.0

photo

正如你所看到的,圆圈确实更小,而且中心不是我想要的地方?我做错了什么??

最佳答案

我们进行了一次很好的讨论,我对所有输入提出了质疑,但输入并不是问题所在。

遗憾的是,我们花了这么长时间才意识到问题出在公式上。

这不是 r = x^2 + y^2,而是 r^2 = x^2 + y^2。

适当的循环如下所示:

r_squared = radius * radius
for xc in range(0, x):
for yc in range(0, y):
if r_squared - 10 <= (xc - center[0]) ** 2 + (yc - center[1]) ** 2 <= r_squared + 10:
canvas.create_oval(xc, yc, xc, yc)

关于python - Tkinter:在没有 create_oval 的情况下在 Canvas 上画一个圆圈,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42376644/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com