python语言基础-4 常用模块-4.6 turtle模块

声明:本内容非盈利性质,也不支持任何组织或个人将其用作盈利用途。本内容来源于参考书或网站,会尽量附上原文链接,并鼓励大家看原文。侵删。

4.6 turtle模块

python是一门灵活而强大的语言,它也可以很方便地实现图形绘制。python中提供了turtle模块用于实现图形绘制。

4.6.1 基本介绍

使用turtle进行图形绘制要先了解以下几个方面:窗体布局、空间坐标系、色彩体系。

(1)窗体布局

窗体就是turtle作图的窗口,turtle模块提供了turtle.setup()函数来创建窗口。具体使用如下:

import turtleturtle.setup(width=300, height=200, startx=100, starty=100)'''
turtle.setup函数规定的绘制图形的窗口,但它不是绘制图形必须的,也可以直接画图。
width,规定了窗体的宽度,是必传参数;
height,规定了窗体的高度,是必传参数;
startx,规定了窗体左边与屏幕左边的边距,是可选参数;
starty,规定了窗体上边与屏幕上边的边距,是可选参数。
'''

(2)空间坐标系

使用turtle画图本质上是虚拟控制画笔触点(称为海龟)在屏幕上的移动,因此需要有坐标系的概念。turtle中支持三种坐标系:绝对坐标系、相对坐标系(海龟坐标系)、角度坐标系。

绝对坐标系:以画面中心为(0, 0)原点,以屏幕向右与向上分别为x方向与y方向,在直角坐标系下控制海龟在屏幕上的移动。可以使用turtle.goto(x, y)来控制海龟到达指定的位置。

相对坐标系:以海龟自身为原点,控制海龟的移动。如:turtle.fd(d),使用海龟前进距离d;turtle.bk(d)使海龟后退距离d;turtle.circle(r, angle),使海龟以半径r右转某个角度。

角度坐标系:是指一个绝对的角度坐标系,以屏幕的向右为0度,逆时针旋转为正,顺时针旋转为负。例如:turtle.seth(angle),改变海龟的前进角度,但不绘制图形;turtle.left(angle),向左转某个角度;turtle.right(angle),向右转某个角度。

(3)色彩体系

turtle要想画出颜色不同的线条需要对颜色参数进行控制,最常用的色彩体系是RGB色彩体系。

RGB色彩体系是由红、绿、蓝三种通道颜色组成混合色的调色体系。下面是常用见色彩的RGB值:

色彩名整体RGB值小数RGB值
white255,255,2551,1,1
red255,0,01,0,0
green0,255,00,1,0
blue0,0,2550,0,1
yellow255,255,01,1,0
magenta255,0,2551,0,1
cyan0,255,2550,1,1
black0,0,00,0,0

turtle使用turtle.colormode(mode)来改变色彩控制模式(使用小数RGB或整数RGB)。取mode=1.0则表示使用小数模式;即mode=255则表示使用整数模式;默认采用小数值来定义色彩。

4.6.2 语法元素分析

turtle库中提供了许多函数来控制海龟的行为,以到达画出指定图形的目的。这些函数大体可以分为三类:画笔控制函数、运动控制函数和方向控制函数。

(1)画笔控制函数

画笔控制函数即控制画笔操作,画笔操作执行后一直有效,一般成对出现。常用的画笔控制函数有:

  • turtle.penup():别名turtle.pu()。抬起画笔,抬起画笔后海龟不会在画布上留下轨迹;
  • turtle.pendown():别名turtle.pd()。落下画笔,落下画笔后海龟会在画布上留下轨迹;
  • turtle.pensize(width):别名turtle.width(width)。决定画笔的粗细;
  • turtle.pencolor(color):决定画笔的颜色。color可以是颜色的名称字符串(如"red"),也可以是RGB值(如1,0,1或元组形式(1,0,1))。

(2)运动控制函数

运动控制函数用于控制海龟的行进,走直线或走曲线。常用的运动控制函数如下:

  • turtle.forword(d):别名turtle.fd(d)。向前行进,海龟走直线,d为行进距离;
  • turtle.circle(r, extent, steps):根据半径r绘制角度为extent角度的弧形。steps表示圆内接多边形的边数,可用于画内接多边形。r为+,则海龟向右侧画圆;r为-,则海龟向左侧画圆。

(3)方向控制函数

方向控制函数用于控制海龟的运动方向,可以使用绝对角度或相对角度。常用函数如下:

  • turtle.setheading(angle):改变行进方向,即海龟的方向转为绝对角度值;
  • turtle.left(angle):向左转,改变相对角度值;
  • turtle.right(angle):向右转,改变相对角度值。

(4)其他函数

turtle.done():写在代码的最后一行,保证程序执行完毕后不会自动退出窗口,而是使用手动退出;若不加此行,则自动退出。

turtle.hideturtle():在画图完毕后隐藏海龟,以免挡住图上的某些点。

4.6.3 示例:科赫雪花图案绘制

科赫雪花是一种典型的分形几何图案。它的绘制过程如下:

  • 取一条长为l的直线,即为0阶科赫曲线;
  • 取直线的中间1/3长度,改成一个60度的锐角,即为一阶科赫曲线;
  • 对一阶科赫曲线上的每段直线重复相同的操作,即得二阶科赫曲线;
  • 循环多次,即可得n阶科赫曲线…

可以看到科赫雪花的绘制过程是典型的递归过程,最终我们要画的第n阶线段的长度,都取决于n-1阶线段的长度。绘制的代码如下:

import turtle# 定义绘制科赫雪花的递归函数
def koch(size, n):if n==0:turtle.fd(size)else:for angle in [0, 60, -120, 60]:turtle.left(angle)koch(size/3, n-1)# 定义一个函数,调用递归函数,并执行绘制过程
def main():turtle.setup(600, 600)turtle.penup()turtle.goto(-200, 100)turtle.pendown()turtle.pensize(2)level=3koch(400, level)turtle.right(120)  # 转角度后再次绘制,重复两次以获得封闭的科赫雪花图形koch(400, level)turtle.right(120)koch(400, level)turtle.hideturtle()main()  # 调用主函数,开始绘制

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/12978.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

OpenCV与AI深度学习 | 基于YoloV11自定义数据集实现车辆事故检测(有源码,建议收藏!)

本文来源公众号“OpenCV与AI深度学习”,仅用于学术分享,侵权删,干货满满。 原文链接:基于YoloV11自定义数据集实现车辆事故检测 在智能交通系统领域,实时检测车辆事故的能力变得越来越重要。该项目利用先进的计算机视…

Stable Diffusion 秋叶整合包:Deoldify 插件安装不上的处理办法

打开文件 install.py,参见下图: 把 fasiai 的版本号改成 1.0.61 即可。参见下图:

windows下qt5.12.11使用ODBC远程连接mysql数据库

1、下载并安装mysql驱动,下载地址:https://dev.mysql.com/downloads/ 2、配置ODBC数据源,打开64位的ODBC数据源配置工具:

7+纯生信,单细胞识别细胞marker+100种机器学习组合建模,机器学习组合建模取代单独lasso回归势在必行!

影响因子:7.3 研究概述: 皮肤黑色素瘤(SKCM)是所有皮肤恶性肿瘤中最具侵袭性的类型。本研究从GEO数据库下载单细胞RNA测序(scRNA-seq)数据集,根据原始研究中定义的细胞标记重新注释各种免疫细胞…

World of Warcraft [WeakAuras]Barney Raid Kit - Collapsing Star Indicator

https://wago.io/BarneyCS 黄色数字表示需要修的血量。 绿色数字表示停止修血。 红色数字表示修血过量,以及该坍缩星将在大爆炸读条结束前多少秒爆炸。 Numbers in yellow means damage required. Numbers in green means HP is good, dont damage anymore. Numbers…

丹摩征文活动 | 0基础带你上手经典目标检测模型 Faster-Rcnn

文章目录 🍋1 引言🍋2 平台优势🍋3 丹摩平台服务器配置教程🍋4 实操案例( Faster-rcnn 项目)🍋4.1 文件处理🍋4.2 环境配置🍋4.3 训练模型🍋4.4 数据保存并导…

17.UE5丰富怪物、结构体、数据表、构造函数

2-19 丰富怪物,结构体、数据表格、构造函数_哔哩哔哩_bilibili 目录 1.结构体和数据表格 2.在构造函数中初始化怪物 3.实现怪物是否游荡 1.结构体和数据表格 创建蓝图:结构体蓝图 在结构体蓝图中添加变量,如下所示,为了实现不…

基于SpringBoot+Vue实现剧本杀服务平台【源码+LW+PPT+部署】

作者简介:Java领域优质创作者、CSDN博客专家 、CSDN内容合伙人、掘金特邀作者、阿里云博客专家、51CTO特邀作者、多年架构师设计经验、多年校企合作经验,被多个学校常年聘为校外企业导师,指导学生毕业设计并参与学生毕业答辩指导,…

企业系统集成方案:吉客云与金蝶云星空的无缝对接

企业系统集成方案:吉客云与金蝶云星空的无缝对接 项目背景: 一家领先的3C数码电子产品企业,专注于充电宝、按摩仪等高科技产品的自主研发、设计、生产和销售。企业紧跟市场趋势,积极拓展国内外市场,业务覆盖亚洲、美…

Hi3516CV610 超高清智慧视觉 SoC 产品简介

Hi3516CV610 Hi3516CV610 超高清智慧视觉SoC 内置人脸检测、人形检测、车辆检测、宠物检测、包裹检测算法 总体介绍 Hi3516CV610是一颗应用在安防市场的IPC SoC。在开放操作系统、新一代视频编解码标准、 网络安全和隐私保护、人工智能方面引领行业发 展,主要面…

【短视频内容管理系统的源代码解析与技术交流】

打造短视频矩阵源码,优化细节决胜负 开发和部署短视频矩阵源代码实际上并不复杂。它主要依赖于抖音平台提供的开放权限进行研发,市场上常见的代码功能架构也大同小异。关键在于细节处理和产品优化上的差异。 例如: 1. 在视频制作模块中&…

PH热榜 | 2024-11-12

DevNow 是一个精简的开源技术博客项目模版,支持 Vercel 一键部署,支持评论、搜索等功能,欢迎大家体验。 在线预览 1. Spiky 标语:实时洞察,助力销售决策更快更明智。 介绍:Spiky AI 帮你用实时指导提升团…

C++ 关于基于范围的for循环(C++11) 语法 详解

范围for的语法 在 C98 中如果要遍历一个数组 void TestFor() { int array[] { 1, 2, 3, 4, 5 }; for (int i 0; i < sizeof(array) / sizeof(array[0]); i)array[i] * 2; for (int* p array; p < array sizeof(array)/ sizeof(array[0]); p)cout << *p <<…

【入门篇】判断推理是否有效的实例2——多语言版

跳转原题&#xff1a;判断推理是否有效的实例2 问题分析 根据题目给出的推理逻辑&#xff0c;我们有以下几个条件&#xff1a; 如果张老师来了&#xff08;(P)&#xff09;&#xff0c;问题可以解答&#xff08;(R)&#xff09;&#xff1a;(P \rightarrow R)如果李老师来了&…

5GAP模型:探寻服务质量问题的产生源头

| 91%的消费者表示&#xff0c;他们更有可能在获得卓越的服务体验后再次购买——Salesforce Research 一、什么是5GAP模型&#xff1f; 5GAP模型&#xff0c;指的是服务质量差距模型&#xff08;Service Quality Model&#xff09;&#xff0c;它是由美国营销学家帕拉休拉曼、…

期刊论文查重率多少,才会不被认定为学术不端?

Q问&#xff1a;论文查重和学术不端具有紧密的相关性&#xff0c;但是被认定为学术不端的查重率的界限是什么&#xff1f; A答&#xff1a;关于论文和查重&#xff0c;虽然这两者之间有着“说不清也道不明”的关系&#xff0c;这其中很重要的一个原因是很多人对查重都有一定的…

JAVA中重写与重载的极简区别

重载就是同样的一个方法能够根据输入数据的不同&#xff0c;做出不同的处理重写就是当子类继承自父类的相同方法&#xff0c;输入数据一样&#xff0c;但要做出有别于父类的响应时&#xff0c;你就要覆盖父类方法 方法的重写(Overriding)和重载(Overloading)是java多态性的不同…

[Linux]:IO多路转接之epoll

1. IO 多路转接之epoll 1.1 epoll概述 epoll是Linux内核为处理大规模并发网络连接而设计的高效I/O多路转接技术。它基于事件驱动模型&#xff0c;通过在内核中维护一个事件表&#xff0c;能够快速响应多个文件描述符上的I/O事件&#xff0c;如可读、可写、异常等&#xff0c;…

从0开始学习Linux——用户管理

往期目录&#xff1a; 从0开始学习Linux——简介&安装 从0开始学习Linux——搭建属于自己的Linux虚拟机 从0开始学习Linux——文本编辑器 从0开始学习Linux——Yum工具 从0开始学习Linux——远程连接工具 从0开始学习Linux——文件目录 从0开始学习Linux——网络配置 从0开…

Docker 安装Immich教程

Immich 是一个开源的自托管照片和视频管理平台,专为帮助用户存储、管理、和分享个人媒体库而设计。Immich 的目标是提供一个类似 Google Photos 的替代方案,但不依赖于第三方服务,用户可以完全控制自己的数据。 本章教程,记录如何用Docker部署安装Immich,使用的操作系统的…