002 python绘图-用 Turtle 绘制圆形与创意图形

绘制圆

关键代码

import turtle
#  创建一个海龟对象
t = turtle.Turtle()
# 绘制半径为100的完整圆
t.circle(100) 
# 保持窗口不消失
turtle.done()

在这里插入图片描述

参数解析

绘制圆的方法: circle()

  • radius:半径(正数:向左画,负数:向右画)。
  • extent(可选):弧度(如 180 为半圆)。
  • steps(可选):多边形边数(如 steps=6 画六边形)。

示例

向右画圆

adius:半径(正数:向左画,负数:向右画)。

import turtle
#  创建一个海龟对象
t = turtle.Turtle()
# 画圆半径为100,顺时针画圆
t.circle(-100)
# 保持窗口不消失
turtle.done()
绘制圆弧

extent(可选):弧度(如 180 为半圆)。

import turtle
#  创建一个海龟对象
t = turtle.Turtle()
# ,逆时针画圆,半径为100,圆弧度数为180度
t.circle(100,180)
# 保持窗口不消失
turtle.done()

在这里插入图片描述

绘制多边形

steps(可选):多边形边数(如 steps=6 画六边形)

import turtle
#  创建一个海龟对象
t = turtle.Turtle()
# ,逆时针画圆,半径为100,圆弧度数为360度,6笔绘制完成
t.circle(100,360,6)
# 保持窗口不消失
turtle.done()
绘制一半六边形
import turtle
#  创建一个海龟对象
t = turtle.Turtle()
# ,逆时针画圆,半径为100,圆弧度数为180度,3笔绘制完成
t.circle(100,180,3)
# 保持窗口不消失
turtle.done()

方向与位置控制

  • 海龟的朝向‌:圆心始终在海龟左侧,绘制时海龟逆时针移动。
  • 调整位置‌:用 penup() + goto() 移动起点。
例 1:绘制多个不同位置的圆
import turtle

t = turtle.Turtle()
t.speed(1)

# 示例 1:在 (100, 100) 处画红色圆
t.penup()
t.goto(100, 100)  # 移动到坐标 (100, 100)
t.pendown()
t.pencolor("red")
t.circle(50)  # 半径 50,圆心在当前位置左侧 50 像素处

# 示例 2:在 (-100, -100) 处画蓝色圆
t.penup()
t.goto(-100, -100)
t.pendown()
t.pencolor("blue")
t.circle(50)

turtle.done()
绘制花朵
import turtle

t = turtle.Turtle()
t.speed(0)  # 最高速度
t.pensize(2)
t.pencolor("pink")

# 移动到起始位置
t.penup()
t.goto(0, -50)  # 让花朵中心适当上移
t.pendown()

# 画花瓣(使用对称圆弧构造)
for _ in range(6):
    t.circle(50, 60)  # 画左半花瓣
    t.left(120)
    t.circle(50, 60)  # 画右半花瓣
    t.left(60)  # 旋转到下一个花瓣方向

turtle.done()

在这里插入图片描述

绘制花朵,加上茎叶
import turtle

t = turtle.Turtle()
t.speed(5)  # 最高速度
t.pensize(2)
t.pencolor("pink")
t.hideturtle()

# 移动到起始位置
t.penup()
t.goto(0, -50)  # 让花朵中心适当上移
t.pendown()

t.left(90)
t.forward(20)
t.right(90)

t.circle(50, 60)  # 画左半花瓣
t.left(120)
t.circle(50, 60)  # 画右半花瓣
t.right(120)  # 旋转到下一个花瓣方向

t.circle(50, 60)  # 画左半花瓣
t.left(120)
t.circle(50, 60)  # 画右半花瓣

t.left(90)
t.forward(80)
t.right(60)



# 画花瓣(使用对称圆弧构造)
for _ in range(6):
    t.circle(50, 60)  # 画左半花瓣
    t.left(120)
    t.circle(50, 60)  # 画右半花瓣
    t.left(60)  # 旋转到下一个花瓣方向

turtle.done()

在这里插入图片描述

绘制花朵,加上花盆
import turtle

t = turtle.Turtle()
t.speed(5)  # 最高速度
t.pensize(2)
t.pencolor("pink")
t.hideturtle()

'''绘制花盆'''
# 移动到起始位置
t.penup()
t.goto(0, -50)  # 让花朵中心适当上移
t.pendown()
# 向左边绘制50的直线
t.left(180)
t.forward(50)
# 向下绘制圆弧
t.left(90)
t.circle(50, 60)

# 向右边绘制直线
t.left(30)
t.forward(50)
# 绘制向上的圆弧
t.left(30)
t.circle(50, 60)
# 绘制直线
t.left(90)
t.forward(50)
'''花盆结束'''

'''绘制茎叶'''
t.right(90)
t.forward(20)
t.right(90)

t.circle(50, 60)  # 画左半花瓣
t.left(120)
t.circle(50, 60)  # 画右半花瓣
t.right(120)  # 旋转到下一个花瓣方向

t.circle(50, 60)  # 画左半花瓣
t.left(120)
t.circle(50, 60)  # 画右半花瓣

t.left(90)
t.forward(80)
t.right(60)
'''绘制茎叶结束'''


# 画花瓣(使用对称圆弧构造)
for _ in range(6):
    t.circle(50, 60)  # 画左半花瓣
    t.left(120)
    t.circle(50, 60)  # 画右半花瓣
    t.left(60)  # 旋转到下一个花瓣方向



turtle.done()

在这里插入图片描述

绘制花朵,加上花盆,颜色填充

t.fillcolor(“red”)
t.begin_fill() # 开始填充颜色
t.end_fill() # 结束填充

import turtle

t = turtle.Turtle()
t.speed(5)  # 最高速度
t.pensize(2)
t.pencolor("pink")
t.hideturtle()



'''绘制花盆'''
# 移动到起始位置
t.penup()
t.goto(0, -50)  # 让花朵中心适当上移
t.pendown()
t.fillcolor("red")
t.begin_fill()  # 开始填充颜色
# 向左边绘制50的直线
t.left(180)
t.forward(50)
# 向下绘制圆弧
t.left(90)
t.circle(50, 60)

# 向右边绘制直线
t.left(30)
t.forward(50)
# 绘制向上的圆弧
t.left(30)
t.circle(50, 60)
# 绘制直线
t.left(90)
t.forward(50)
t.end_fill()
'''花盆结束'''

'''绘制茎叶'''
t.pencolor("#2E8B57")  # 森林绿色
t.fillcolor("#2E8B57")
t.begin_fill()
t.right(90)
t.forward(20)
t.right(90)

t.circle(50, 60)  # 画左半花瓣
t.left(120)
t.circle(50, 60)  # 画右半花瓣
t.right(120)  # 旋转到下一个花瓣方向

t.circle(50, 60)  # 画左半花瓣
t.left(120)
t.circle(50, 60)  # 画右半花瓣

t.left(90)
t.forward(80)
t.right(60)
t.end_fill()
'''绘制茎叶结束'''

t.pencolor("#FF69B4")  # 亮粉色
t.fillcolor("#FF69B4")
t.begin_fill()
# 画花瓣(使用对称圆弧构造)
for _ in range(6):
    t.circle(50, 60)  # 画左半花瓣
    t.left(120)
    t.circle(50, 60)  # 画右半花瓣
    t.left(60)  # 旋转到下一个花瓣方向

t.end_fill()

turtle.done()

在这里插入图片描述

绘制同心圆
import turtle

t = turtle.Turtle()
t.speed(5)

# 初始位置 (0, 0)
for r in range(20, 100, 20):  # 半径从 20 到 80,步长 20
    t.penup()
    t.goto(0, -r)  # 圆心在 (0,0),海龟在 (0, -r) 处
    t.pendown()
    t.circle(r)     # 绘制半径为 r 的圆

turtle.done()

在这里插入图片描述

自定义方向绘制半圆

t.setheading(0) # 朝右
t.setheading(180) # 朝左

import turtle

t = turtle.Turtle()
t.speed(1)

# 绘制右半圆(圆心在左侧)
t.penup()
t.goto(0, 0)
t.setheading(0)  # 朝右
t.pendown()
t.circle(50, 180)  # 半圆(180 度)

# 绘制左半圆(调整方向)
t.penup()
t.goto(0, 0)
t.setheading(180)  # 朝左
t.pendown()
t.circle(50, 180)

turtle.done()

在这里插入图片描述

绘制八卦图案
import turtle

t = turtle.Turtle()
t.speed(5)

# 绘制右半圆(圆心在左侧)
t.penup()
t.goto(0, 0)
t.setheading(0)  # 朝右
t.pendown()
t.circle(50, 180)  # 半圆(180 度)

# 绘制左半圆(调整方向)
t.penup()
t.goto(0, 0)
t.setheading(180)  # 朝左
t.pendown()
t.circle(50, 180)

# 绘制外面的大圆
t.circle(100,360)

# 绘制八卦图中间的小圆
t.penup()
t.goto(0, 35)
t.pendown()
t.circle(15)

t.penup()
t.goto(0, -65)
t.pendown()

t.circle(15)

turtle.done()

在这里插入图片描述

绘制八卦图案,填充黑白色

因为要填充颜色,绘制的思路就需要改变一下,因为填充颜色是按照绘制路径来的。所以要一半一半的绘制。先绘制黑色部分,再绘制白色部分

import turtle

t = turtle.Turtle()
t.speed(5)
t.hideturtle() # 隐藏画笔
'''黑色部分绘制'''
# 填充黑色背景
t.fillcolor("black")
t.begin_fill()
# 外面的大圆半径100,圆心在0,0,画一半,方便填充颜色
t.penup()
t.goto(0, -100)
t.pendown()
t.circle(100,180)



# 画一个小半圆,半径50
t.circle(50,180)

# 顺时针绘制一个小半圆,半径50
t.circle(-50,180)
t.end_fill()
'''黑色部分绘制完成'''

'''绘制白色部分'''
# 顺时针绘制外面的另外一半圆
t.circle(-100,180)
'''绘制白色部分完成'''


# 绘制黑色中间的小圆,半径15,填充白色
t.penup()
t.goto(0, 35)
t.pendown()
t.fillcolor("white")
t.begin_fill()
# 根据当前箭头方向,逆时针画圆
t.circle(15)
t.end_fill() # 结束填充


# 绘制白色中间的小圆,半径15,填充黑色
t.penup()
t.goto(0, -35)
t.pendown()
t.fillcolor("black")
t.begin_fill()
# 根据当前箭头方向,顺针画圆
t.circle(-15)
t.end_fill()

turtle.done()

在这里插入图片描述

绘制八卦图案,填充黑白色

要点:两个圆重叠

import turtle

# 设置画布背景颜色
turtle.bgcolor("black")

# 创建画笔
t = turtle.Turtle()
t.speed(3)
t.pensize(2)
t.pencolor("white")  # 月亮边缘颜色
t.fillcolor("white")  # 月亮填充颜色

# 画大圆(完整月亮)
t.penup()
t.goto(50, -50)  # 让月亮偏右一些
t.pendown()
t.begin_fill()
t.circle(100)  # 大圆
t.end_fill()

t.pencolor("black")  # 月亮边缘颜色
# 画小圆(遮挡部分形成月牙)
t.penup()
t.goto(110, -50)  # 调整小圆的位置形成不同的月相
t.pendown()
t.fillcolor("black")  # 小圆填充黑色,使其与背景融合
t.begin_fill()
t.circle(100)  # 小圆
t.end_fill()

# 隐藏画笔
t.hideturtle()

turtle.done()

在这里插入图片描述

任务1‌:画一个红色边框、黄色填充的圆

‌任务2‌:画一个半圆(半径=180),并移动到坐标(-100,0)画完整圆

同心圆‌:绘制靶子在这里插入图片描述

螺旋圆‌:结合半径递增和角度旋转

在这里插入图片描述

自由创作

设计:彩色风车、笑脸、雪花等圆形组合图案

挑战任务‌:画一个五环图案(嵌套圆 + 颜色变化)。

在这里插入图片描述

课后作业‌:

尝试用 circle(steps=4) 画一个正方形,对比与 forward 的差异。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值