【计算机图形学】用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进行简单的图形绘制相关推荐

  1. 计算机图形学二维图形基本变换实验原理,江苏大学-计算机图形学第三次实验报告-二维图形变换...

    <江苏大学-计算机图形学第三次实验报告-二维图形变换>由会员分享,可在线阅读,更多相关<江苏大学-计算机图形学第三次实验报告-二维图形变换(13页珍藏版)>请在人人文库网上搜索 ...

  2. 山西计算机信息技术八年级教案,八年级信息技术 1.2 简单的图形绘制教案 山西版...

    <八年级信息技术 1.2 简单的图形绘制教案 山西版>由会员分享,可在线阅读,更多相关<八年级信息技术 1.2 简单的图形绘制教案 山西版(2页珍藏版)>请在人人文库网上搜索. ...

  3. JAVA————简单的图形绘制界面(教程)

    JAVA----简单的图形绘制界面 我们先要清楚,绘制界面需要什么东西. 1.需要一个窗体来显示我们的界面. 2.需要一个组件(画笔)来让我们绘制图形. 3.需要监听来判断我们选择的画笔以及鼠标对画布 ...

  4. 【Python】turtle 库:基本介绍 || 绘制简单图形:圆形、正方形、正六边形、小风车、等边三角形、五角星、奥运五环、四叶花瓣、太阳花、五星红旗、正方形螺旋线

    仅学习使用喔 ~ 文章目录 一.什么是Python中的 turtle库 ?常见函数介绍 0.turtle 库 介绍: 1.画笔控制函数: 2.运动控制函数: 3.方向控制函数: 二.常见图形绘制 1. ...

  5. python 图形库有哪些_Python基本图形绘制库——turtle

    (1).介绍 turtle库也叫海龟库,是turtle绘图体系的Python实现.turtle库是Python语言的标准库之一,是入门级的图形绘制函数库. turtle绘图体系:也叫海龟绘图系统,它是 ...

  6. 利用python的turtle库画一个图形

    今天我们用python的turtle库制作一个简单的图形(新手必看) [注:turtle是python的标准自带库,无需安装!] 好的废话不多说我们开始写代码 #制作人:中将 #一起自学python ...

  7. 计算机图形学 学习笔记(八):三维图形变换:三维几何变换,投影变换(平行/ 透视 投影)

    接上文 计算机图形学 学习笔记(七):二维图形变换:平移,比例,旋转,坐标变换等 通过三维图形变换,可由简单图形得到复杂图形,三维图形变化则分为三维几何变换和投影变换. 6.1 三维图形几何变换 三维 ...

  8. 计算机图形学bazzer茶壶制作_书籍推荐:艺术化绘制的图形学原理与方法

    这本书介绍了如何用计算机创造出各种艺术化,风格化的效果.是一本很好的全面的对各个好玩的艺术化方法的概览,读者可以任选其中几个确认过眼神的,再去网上搜索具体的算法实现.本文章将介绍书里一些好玩的东西. ...

  9. 用python 画炫酷的图并讲解-使用Python的turtle画炫酷图形

    原标题:使用Python的turtle画炫酷图形 例子一: import turtle t = turtle.Pen() turtle.bgcolor("black") sides ...

最新文章

  1. requestmapping默认是get还是post_编写Spring MVC控制器的14个技巧,你今天get到了吗?...
  2. windows mobile 软件_三星两款新软件曝光,使智能手机和电视更好交互
  3. (十)Java B2B2C o2o多用户商城 springcloud架构- SSO单点登录之OAuth2.0登录认证(1)
  4. 建议看 | 计算机网络核心概念
  5. 处理有外键约束的数据
  6. MyBatis自学(1):MyBatis概述
  7. 武侠人士的10大绝招
  8. matlab颜色识别提取,matlab实现图像颜色特征提取
  9. 计算机黑屏什么原因,教您电脑黑屏的原因是什么
  10. python执行源程序的方式是_python源程序执行的方式
  11. vue面试题+答案,2021前端面试
  12. android 设置启动画面,修改Android开机画面
  13. adb 备份和还原apk应用数据
  14. C语言求23阶行列式,AX=0通解,施密特正交化
  15. Hibernate框架基础——cascade属性
  16. HbuilderX 自有证书生成
  17. 计算机网络中的猫,宽带猫的作用和分类【图解】
  18. openCV错误解决方案:无法启动此程序,因为计算机中丢失opencv_world310.dll
  19. 推荐引擎:从搜索到发现
  20. php artisan实现机制,源码解读:php artisan serve

热门文章

  1. Android的专用驱动
  2. Java设计模式23种(搞笑版)
  3. Java,如何获取文件的MD5值
  4. 进程线程协程素质三连
  5. 图像处理入门5-特征提取
  6. linux支持三种类型的硬件,linux
  7. linux上传文件夹到hdfs,Linux上传本地文件到Hadoop的HDFS文件系统
  8. 培养孩子数学兴趣,从数学家的故事开始...
  9. 小程序+node获取用户openid
  10. 二叉堆(c++实现)