Python turtle绘制圆形不对齐不对称 最后一个圆存在偏移如何解决
问题原因
- 第三个圆的绘制逻辑不匹配:画完第二个圆后你左转了180度,此时仍沿用
left(angle)的转向逻辑,会导致圆的绘制中心偏离预期位置,你设置的起始点(0,r)和当前朝向不匹配。 - 半径计算存在近似误差:你用圆周长推导半径的方式对于正多边形近似的圆存在微小偏差,边数越少偏差越明显。
解决方法
- 最小改动方案:调整第三个圆的转向逻辑,将左转改为右转,匹配180度朝向的绘制需求
- 精度优化方案:使用正多边形外接圆半径公式计算半径,消除近似误差:
r = step / (2 * math.sin(math.radians(angle/2)))
修正后代码
import turtle import math window = turtle.Screen() window.bgcolor('cyan') loop = 90 angle = 4 step = 8 # 使用正多边形外接圆半径公式计算准确半径 r = step / (2 * math.sin(math.radians(angle/2))) the_turtle = turtle.Turtle() the_turtle.speed(500) # 第一个圆 for x in range(loop): the_turtle.forward(step) the_turtle.left(angle) # 第二个圆 the_turtle.penup() the_turtle.setposition(0,r) the_turtle.pendown() for x in range(loop): the_turtle.forward(step) the_turtle.left(angle) # 第三个圆:调整转向为右转,匹配180度朝向 the_turtle.left(180) the_turtle.penup() the_turtle.setposition(0,r) the_turtle.pendown() for x in range(loop): the_turtle.forward(step) the_turtle.right(angle) turtle.exitonclick()
运行后三个圆会完全对齐,无偏移问题。
内容的提问来源于stack exchange,提问作者dspysql
相关产品推荐
相关产品推荐

