天天看点

turtle circle学习笔记

turtle circle学习笔记

turtle.circle是turtle中的常用命令,基本语法是circle(radius,e),即画一个指定半径为r,角度e的圆或弧,如

circle(90)# 画一个半径为90的圆

circle(90,90)# 画一个半径为90,角度90的弧

比较奇特的是,无论半径或角度都可以取负数,某些应用中用到上述取负值情况,需要进一步研究并观察取负值时的行为。

根据排列组合有4种情况:

假定画笔起始点在原点(0,0),0度方向

  1. 全正值,如circle(90,90),圆心在y轴90像素,逆时针方向运动画圆或弧,绘图方向和当前方向相同,即从第1象限逆时针同向绘图。
  2. 半径为正,角度为负,如circle(90,-90),圆心在y轴90像素,顺时针方向运动画圆或弧,绘图方向和当前方向相反,即从第2象限顺时针逆向绘图。
  3. 半径为负,角度为正,如circle(-90,90),圆心在y轴-90像素,顺时针方向运动画圆或弧,绘图方向和当前方向相同,即从第4象限顺时针同向绘图。
  4. 全负值,如circle(-90,-90),圆心在y轴-90像素,逆时针方向运动画圆或弧,绘图方向和当前方向相反,即从第3象限逆时针逆向绘图。

    一个问题:如果画笔不在初始位置,如何判断绘图方向?

    答:根据画笔位置,旋转坐标系,以画笔位置为原点,画笔指向为x轴0度方向,画笔逆时针垂直方向为y轴正值方向。【最简单方式,可以在纸上画出坐标系,然后根据画笔方向旋转纸张。】

以下是一个实际例子,绘制12个花瓣,其中turtle.circle(-90,90)表示,在第4象限顺时针绘制一个90度的弧。

import turtle
turtle.fillcolor("yellow")
turtle.begin_fill()
for i in range(12):
    turtle.circle(-90,90)
    turtle.right(120)
turtle.end_fill()
turtle.hideturtle()
turtle.done()