根据坐标点绘制三角形

功能要求

在平面上给定三个点的坐标,根据三个点绘制出一个三角形。

实例代码

import turtle'''指定平面上的三个点绘制并填充三角形points列表参数保存三角形三个点的坐标color参数三角形的填充颜色'''def drawTriangle(points, color):turtle.color(color)# 设置画笔的起点为points[0]turtle.penup()turtle.goto(points[0])turtle.pendown()turtle.begin_fill()turtle.goto(points[1])  # 走到points[1]turtle.goto(points[2])  # 走到points[2]turtle.goto(points[0])  # 回到points[0],完成三角形的绘制turtle.end_fill()p = [[-200, -100], [0, 200], [200, -100]]   # 三角形三个顶点分别为(-200, -100)、(0, 200)、(200, -100)drawTriangle(p, "orange")   # 三角形填充orange颜色turtle.done()

运行结果

绘制谢尔宾斯基三角形

功能要求

谢尔宾斯基三角形(英语:Sierpinski triangle)是一种分形,由波兰数学家谢尔宾斯基在1915年提出。它是自相似集的例子。它的豪斯多夫维是log(3)/log(2) ≈ 1.585。谢尔宾斯基三角形的构造方法。

1.取一个实心的三角形。(多数使用等边三角形)

2.沿三边中点的连线,将它分成四个小三角形。

3.去掉中间的那一个小三角形。

4.对其余三个小三角形重复1。

取一个正方形或其他形状开始,用类似的方法构作,形状也会和谢尔宾斯基三角形相近。

修改drawTriangle()方法,根据指定的层次,递归调用drawTriangle()方法,修改三角形的三个定点绘制出最终的谢尔宾斯基三角形。

实例代码

import turtleturtle.speed(0)     # 设置画笔的速度turtle.hideturtle() # 隐藏画笔'''获得两个点的中间点point1和point2参数表示两个点的坐标'''def getMidPoint(point1, point2):return (point1[0] + point2[0]) / 2, (point1[1] + point2[1]) / 2'''根据最初的三角形的单个点绘制谢尔宾斯基三角形points参数:保存三角形的三个定点坐标的集合degree参数:谢尔宾斯基三角形的层次'''def drawTriangle(points, degree):colors = ['red', 'green', 'blue', 'pink', 'violet', 'orange', 'yellow']# 定义谢尔宾斯基三角形各层的颜色turtle.color(colors[degree % len(colors)])  # 根据层次获取这一层填充的颜色# 设置points[0]为开始绘制三角形的起点turtle.penup()turtle.goto(points[0])turtle.pendown()turtle.begin_fill()turtle.goto(points[1])  # 走到points[1]turtle.goto(points[2])  # 走到points[2]turtle.goto(points[0])  # 回到points[0],完成三角形的绘制turtle.end_fill()if degree > 0:  # 判断degree是否大于0,是大于则递归调用drawTriangle,重新设置三角形的定点,degree-1drawTriangle([points[0], getMidPoint(points[0], points[1]), getMidPoint(points[0], points[2])], degree - 1)drawTriangle([points[1], getMidPoint(points[0], points[1]), getMidPoint(points[1], points[2])], degree - 1)drawTriangle([points[2], getMidPoint(points[0], points[2]), getMidPoint(points[1], points[2])], degree - 1)p = [[-200, -100], [0, 200], [200, -100]]# 绘制谢尔宾斯基三角形的起始三个坐标点drawTriangle(p, 5)  # 根据起始的三个坐标点,绘制深度为5的谢尔宾斯基三角形turtle.done()

运行结果

「Python海龟画图」利用海龟画笔绘制谢尔宾斯基三角形相关推荐

  1. Java面向对象编程:利用递归思想绘制“谢尔宾斯基地毯”和“谢尔宾斯基三角形”

    1.递归:在方法中调用本方法. 2.递归调用会无限循环下去,因此方法体中必须有结束方法的条件.返回值为void时通常写为: if (条件) {return; } 下面使用递归绘制"谢尔宾斯基 ...

  2. python螺旋圆的绘制_python 使用turtule绘制递归图形(螺旋、二叉树、谢尔宾斯基三角形)...

    插图工具使用Python内置的turtle模块,为什么叫这个turtle乌龟这个名字呢,可以这样理解,创建一个乌龟,乌龟能前进.后退.左转.右转,乌龟的尾巴朝下,它移动时就会画一条线.并且为了增加乌龟 ...

  3. Python数据结构15:turtle模块制图,画直线,正方形,星星,递归可视化:分形树,谢尔宾斯基三角形

    1. Python中的turtle模块制图 前面已经讲了递归的原理,这里用递归作图来直观的理解递归. 首先了解以下Python中用于作图的内置海龟作图系统turtle module. Python内置 ...

  4. 陈斌老师《数据结构与算法Python版》第五周作业——ASCII谢尔宾斯基地毯

    陈斌老师<数据结构与算法Python版>第五周作业--ASCII谢尔宾斯基地毯 题目 思路 程序如下 总结 题目 谢尔宾斯基地毯是形如上图的正方形分形图案,每个地毯可分为等大小的9份,其中 ...

  5. python递归三角形_python 谢尔宾斯基三角形的递归实现

    import turtle def draw(points): # 根据三个坐标,画一个三角形 t.penup() t.goto(points['left']) t.pendown() t.goto( ...

  6. 数据结构与算法(Python版)二十二:递归可视化(谢尔宾斯基三角形)

    谢尔宾斯基Sierpinski三角形 分形构造, 平面称谢尔宾斯基三角形, 立体称谢尔宾斯基金字塔 谢尔宾斯基三角形:作图思路 根据自相似特性, 谢尔宾斯基三角形是由3个尺寸减半的谢尔宾斯基三角形按照 ...

  7. Python实验舱谢尔宾斯基三角形绘制教程

    三角形,大家应该再熟悉不过了. 上图是一个由四个小三角形拼成的大三角形,也叫谢尔宾斯基三角形. 谢尔宾斯基三角形还能继续画下去: 2阶(上图是1阶): 3阶: 5阶: 8阶: (小编奉劝一句:不要试图 ...

  8. 学习Python中turtle模块的基本用法(4:绘制科赫曲线和谢尔宾斯基三角形)

      科赫曲线和谢尔宾斯基三角形是常见的分形图形(详细介绍见参考文献1),本文使用turtle库绘制这两类图形. 科赫曲线   科赫曲线的详细介绍见参考文献2,其中的绘图思路是"画正三角形,并 ...

  9. python绘制分形图基础_Python 绘制分形图(曼德勃罗集、分形树叶、科赫曲线、分形龙、谢尔宾斯基三角等)附代码...

    1. 曼德勃罗集 import numpy as np import pylab as pl import time from matplotlib import cm def iter_point( ...

  10. Python编程:实现谢尔宾斯基三角

    Python编程:实现谢尔宾斯基三角 谢尔宾斯基三角,又称谢尔宾斯基地毯,在计算机图形学中是一种经典的分形图形.本文将使用Python编程实现Sierpinski Triangle(谢尔宾斯基三角), ...

最新文章

  1. Swing基础知识(更新中)
  2. jqgrid自定义列表开发=》实现高级查询
  3. php虚拟内存设置,虚拟内存有什么用
  4. 未能找出类型或命名空间名称“T” 问题的解决方案
  5. 完美解决ie8以下不兼容h5的方法
  6. 解决用navicate远程连接数据库出现1045 access denied for user 'root'@'localhost' using password yes...
  7. 装AJAX.NET 1.0的环境,我遇到个问题,进来解答下
  8. pyecharts 绘制地图
  9. .net core 开发 Windows Forms 程序
  10. L1-018. 大笨钟-PAT团体程序设计天梯赛GPLT
  11. 从入门到放弃,50G编程视频免费送!
  12. plugins 插件
  13. 操作系统的了解和安装
  14. 不可不学的摄影技巧之三(摄影小窍门)
  15. C++ Primer Plus P125~P200
  16. 利用shift连点五次进入电脑
  17. npm i 的几种方式区别
  18. 金融风控实战——反欺诈评分卡的大致构建流程
  19. Python 处理dat文件并画图
  20. Unix/Linux 磁盘 I/O 性能监控命令

热门文章

  1. 爱剪辑显示服务器繁忙,爱剪辑视频卡顿怎么回事 爱剪辑视频卡顿解决方法
  2. 百度html模板引擎,百度JS模板引擎 baiduTemplate
  3. 我的世界MinecraftJava版开服教程(Linux)开服器开服包下载开服网站服务器开服核心开服端开服软件mac版Java启动器
  4. 致远互联的下一步:从“协同”到“门户”
  5. SPSS学习入门 简介安装
  6. 编写加密程序,将用户输入的一个英文句子加密为加密字符串,然后输出加密字符串。假设句子长度不超过100个字符。每日一题--20200415--字符串加密类型
  7. python练习3 人脸对齐以及dir、inspect的用法
  8. gamit添加未知天线
  9. arccatalog点要素显示不完_利用ArcCatalog 管理地理空间数据库
  10. 0204UNIFORM SIZE=10M?index?insert分裂