【计算机图形学】用python的turtle进行简单的图形绘制
【计算机图形学】用python的turtle进行简单的图形绘制
- python的turtle模块
- 绘制图形
- 绘制点
- 绘制直线
- 绘制椭圆
- 绘制六边形
- 绘制n次贝塞尔曲线
- 结语
python的turtle模块
Turtle graphics is a popular way for introducing programming to kids.
It was part of the original Logo programming language developed by Wally Feurzig and Seymour Papert in 1966.
Imagine a robotic turtle starting at (0, 0) in the x-y plane. After an import turtle, give it the command turtle.forward(15), and it moves (on-screen!) 15 pixels in the direction it is facing, drawing a line as it moves. Give it the command turtle.right(25), and it rotates in-place 25 degrees clockwise.
By combining together these and similar commands, intricate shapes and pictures can easily be drawn.
以上一段是我在使用VS Code时,看到的对turtle模块的介绍。大致翻译一下:
海龟(Turtle)制图是向孩子介绍编程的一个流行方式。
它是Wally Feurzig和Seymour Papert在1966年创造的原始Logo编程语言的一部分。
想象一下,一个自动的海龟从xy平面的原点(0,0)开始,在输入turtle模块后
import turtle
给出一行命令
turtle.forward(15)
然后海龟就在屏幕上向它面向的方向前进了15个像素点,并且在行进道路上划出了一条线。给它一个命令
turtle.right(25)
它就在原地顺时针旋转了25度。
通过结合这些命令和其他相似的命令,就能够轻易地画出复杂的几何图形和图片。
可以看出,python的turtle模块是一个功能非常强大,并且操作简单的绘图工具。
废话不多说,turtle有很多的库函数,网上很容易就查得到,我这里就不多介绍了(或许以后会单写一篇文章进行详细的介绍),接下来直接进入正题!
绘制图形
在turtle中有直接绘制线、矩形、圆形、椭圆形等的函数,但计算机图形学(至少我们的课程)要求用绘制像素点的方式绘制线、图形,而自带的绘点函数只能在turtle所在位置绘点。
绘制点
下面给出在某个像素点绘制点的函数。
import turtle as pen //下面代码均默认以pen代替turtle字段
def DrawPixel(x,y) :pen.up() //因为turtle在执行goto()时,//会在路径上画出一条直线,//所以先把笔抬起来pen.goto(x,y) //turtle到指定坐标像素点pen.dot(2) //绘制直径为2的像素点//实测参数为1时在我的电脑上看不到点,所以用2
其中x,y是像素点坐标。turtle模块在绘图时,会默认在画布正中央为坐标原点(0,0)。
绘制直线
def DrawLine(x1,y1,x2,y2) :print ("called")dx = abs(x2 - x1)sx = 1 if(x1<x2) else -1dy = abs(y2 - y1)sy = 1 if(y1<y2) else -1err = dx if(dx>dy) else -dyl = dx if(dx>dy) else dyfor i in range(0,l) :DrawPixel(x1,y1)if x1 == x2 and y1 == y2 :breake2 = errif e2 >= -dx :err = err - dyx1 = x1 + sxif e2 <= dy :err = err + dxy1 = y1 + sy
绘制椭圆
首先,椭圆是一个中心对称、双轴对称图形,所以只需要绘制出1/4的图形,其余部分都可根据对称画出。
给出长短半径,进行绘制。
def PaintEllipse(a,b) :pen.delay(0.1) //delay是turtle函数与函数之间执行的间隔,//括号中为时间间隔,单位毫秒//因为绘点需要一个点一个点绘制//而不是靠turtle的移动//否则使用pen.speed()//修改turtle的移动速度x = 0y = bd1 = b*b + a*a *(0.25 - b)DrawPixel(x,y)DrawPixel(-x,-y)while b*b*(x+1) < a*a*(y-0.5) :if d1 < 0 :d1 = d1 + b * b * (2 * x + 3)x = x + 1else :d1 = d1 + b*b*(2*x+3)+a*a*(2-2*y)x = x + 1y = y - 1DrawPixel(x,y)DrawPixel(-x,y)DrawPixel(-x,-y)DrawPixel(x,-y)d2 = math.sqrt(b*(x+0.5)) + math.sqrt(a*(y-1)) - math.sqrt(a*b)while y > 0 :if d2 < 0 :d2 = d2 + b*b*(2*x+2) + a*a*(-2*y+3)x = x + 1y = y - 1else :d2 = d2 + a*a*(-2*y+3)y = y - 1DrawPixel(x,y)DrawPixel(-x,y)DrawPixel(-x,-y)DrawPixel(x,-y)
调用函数
PaintEllipse(100,50) //(横轴半径,竖轴半径)
结果如下
绘制六边形
给出六点坐标,进行绘制并填充。
x,y为六点的list,顺序需对应
def PaintSixEdge(x,y) :i = 0pen.begin_fill()while i < 5 :DrawLine(x[i],y[i],x[i+1],y[i+1])i = i + 1print (x[i])DrawLine(x[5],y[5],x[0],y[0])pen.end_fill()
调用函数
x = [100,200,100,-100,-200,-100]
y = [100,0,-100,-100,0,100]
PaintSixEdge(x,y)
结果如下:
绘制n次贝塞尔曲线
x,y为点的list,顺序需对应
def PaintBezier(x,y) :pen.color("red")number = len(x)t = 0.0while t < 1 :for k in range(1,number+1) :for i in range(0,number-k) :x0 = xpos(x,i,k,t)y0 = ypos(y,i,k,t)DrawPixel(x0,y0)t = t + 0.001 def xpos(x,i,k,t) :if k == 0 :return x[i]else :return (1-t)*xpos(x,i,k-1,t) + t*xpos(x,i+1,k-1,t)def ypos(y,i,k,t) :if k == 0 :return y[i]else :return (1-t)*ypos(y,i,k-1,t) + t*ypos(y,i+1,k-1,t)
调用函数
x = [100,200,100,-100,-200,-100]
y = [100,0,-100,-100,0,100]
PaintBezier(x,y)
结果如下:
结语
通过复杂的循环,以及改变画笔颜色,还能够生成各种各样的好看的图形,感兴趣的小伙伴们自己试试吧!
【计算机图形学】用python的turtle进行简单的图形绘制相关推荐
- 计算机图形学二维图形基本变换实验原理,江苏大学-计算机图形学第三次实验报告-二维图形变换...
<江苏大学-计算机图形学第三次实验报告-二维图形变换>由会员分享,可在线阅读,更多相关<江苏大学-计算机图形学第三次实验报告-二维图形变换(13页珍藏版)>请在人人文库网上搜索 ...
- 山西计算机信息技术八年级教案,八年级信息技术 1.2 简单的图形绘制教案 山西版...
<八年级信息技术 1.2 简单的图形绘制教案 山西版>由会员分享,可在线阅读,更多相关<八年级信息技术 1.2 简单的图形绘制教案 山西版(2页珍藏版)>请在人人文库网上搜索. ...
- JAVA————简单的图形绘制界面(教程)
JAVA----简单的图形绘制界面 我们先要清楚,绘制界面需要什么东西. 1.需要一个窗体来显示我们的界面. 2.需要一个组件(画笔)来让我们绘制图形. 3.需要监听来判断我们选择的画笔以及鼠标对画布 ...
- 【Python】turtle 库:基本介绍 || 绘制简单图形:圆形、正方形、正六边形、小风车、等边三角形、五角星、奥运五环、四叶花瓣、太阳花、五星红旗、正方形螺旋线
仅学习使用喔 ~ 文章目录 一.什么是Python中的 turtle库 ?常见函数介绍 0.turtle 库 介绍: 1.画笔控制函数: 2.运动控制函数: 3.方向控制函数: 二.常见图形绘制 1. ...
- python 图形库有哪些_Python基本图形绘制库——turtle
(1).介绍 turtle库也叫海龟库,是turtle绘图体系的Python实现.turtle库是Python语言的标准库之一,是入门级的图形绘制函数库. turtle绘图体系:也叫海龟绘图系统,它是 ...
- 利用python的turtle库画一个图形
今天我们用python的turtle库制作一个简单的图形(新手必看) [注:turtle是python的标准自带库,无需安装!] 好的废话不多说我们开始写代码 #制作人:中将 #一起自学python ...
- 计算机图形学 学习笔记(八):三维图形变换:三维几何变换,投影变换(平行/ 透视 投影)
接上文 计算机图形学 学习笔记(七):二维图形变换:平移,比例,旋转,坐标变换等 通过三维图形变换,可由简单图形得到复杂图形,三维图形变化则分为三维几何变换和投影变换. 6.1 三维图形几何变换 三维 ...
- 计算机图形学bazzer茶壶制作_书籍推荐:艺术化绘制的图形学原理与方法
这本书介绍了如何用计算机创造出各种艺术化,风格化的效果.是一本很好的全面的对各个好玩的艺术化方法的概览,读者可以任选其中几个确认过眼神的,再去网上搜索具体的算法实现.本文章将介绍书里一些好玩的东西. ...
- 用python 画炫酷的图并讲解-使用Python的turtle画炫酷图形
原标题:使用Python的turtle画炫酷图形 例子一: import turtle t = turtle.Pen() turtle.bgcolor("black") sides ...
最新文章
- requestmapping默认是get还是post_编写Spring MVC控制器的14个技巧,你今天get到了吗?...
- windows mobile 软件_三星两款新软件曝光,使智能手机和电视更好交互
- (十)Java B2B2C o2o多用户商城 springcloud架构- SSO单点登录之OAuth2.0登录认证(1)
- 建议看 | 计算机网络核心概念
- 处理有外键约束的数据
- MyBatis自学(1):MyBatis概述
- 武侠人士的10大绝招
- matlab颜色识别提取,matlab实现图像颜色特征提取
- 计算机黑屏什么原因,教您电脑黑屏的原因是什么
- python执行源程序的方式是_python源程序执行的方式
- vue面试题+答案,2021前端面试
- android 设置启动画面,修改Android开机画面
- adb 备份和还原apk应用数据
- C语言求23阶行列式,AX=0通解,施密特正交化
- Hibernate框架基础——cascade属性
- HbuilderX 自有证书生成
- 计算机网络中的猫,宽带猫的作用和分类【图解】
- openCV错误解决方案:无法启动此程序,因为计算机中丢失opencv_world310.dll
- 推荐引擎:从搜索到发现
- php artisan实现机制,源码解读:php artisan serve