Python3使用turtle绘制超立方体图形示例
作者:逆转流年 发布时间:2021-02-01 14:21:07
标签:Python,turtle,绘制
本文实例讲述了Python3使用turtle绘制超立方体图形。分享给大家供大家参考,具体如下:
利用Python3中turtle的绘制超立方体。
绘图思路:
1)求出边长100的超立方体的点坐标;
以竖直线为依据,将点分为上下两组:
a为上边点列表,b为下边点列表:
a = [[120.71, 50], [50, 120.71], [-50, 120.71], [-120.71, 50], [-50, -20.71], [50, -20.71], [20.71, 50],[-20.71, 50]]
b = [[120.71, -50], [50, 20.71], [-50, 20.71], [-120.71, -50], [-50, -120.71], [50, -120.71], [20.71, -50],[-20.71, -50]]
2)编写绘制直线函数;
3)编写主程序:绘制点,绘制六角形直线,绘制竖直直线,绘制斜线
代码片段如下,可能不是最简洁的,如有好的建议,请不吝指正。
import turtle
# 创建绘制直线函数
def drawLine(p1, p2, size=3, color="black"):
turtle.penup()
turtle.goto(p1)
turtle.pensize(size)
turtle.pencolor(color)
turtle.pendown()
turtle.goto(p2)
def main():
# 求取点后,将超立方体点分为上下两个部分,两个列表
a = [[120.71, 50], [50, 120.71], [-50, 120.71], [-120.71, 50], [-50, -20.71], [50, -20.71], [20.71, 50],
[-20.71, 50]]
b = [[120.71, -50], [50, 20.71], [-50, 20.71], [-120.71, -50], [-50, -120.71], [50, -120.71], [20.71, -50],
[-20.71, -50]]
# 绘制点
turtle.pencolor("red")
turtle.penup()
for i in range(len(a)):
turtle.goto(a[i])
turtle.down()
turtle.dot(10, "red")
turtle.penup()
for i in range(len(b)):
turtle.goto(b[i])
turtle.down()
turtle.dot(10, "red")
turtle.penup()
# 绘制六边形直线
for i in range(6):
if i <= 4:
drawLine(a[i], a[i + 1])
drawLine(b[i], b[i + 1])
else:
drawLine(a[i], a[0])
drawLine(b[i], b[0])
# 绘制竖直线
for i in range(len(a)):
drawLine(a[i], b[i])
# 绘制斜线
drawLine(a[6], a[0])
drawLine(a[6], a[2])
drawLine(a[6], a[4])
drawLine(a[7], a[1])
drawLine(a[7], a[3])
drawLine(a[7], a[5])
drawLine(b[6], b[0])
drawLine(b[6], b[2])
drawLine(b[6], b[4])
drawLine(b[7], b[1])
drawLine(b[7], b[3])
drawLine(b[7], b[5])
turtle.done()
if __name__ == '__main__':
main()
pass
运行结果:
注:使用eclipse+pyDev结合Python3环境开发时,会提示:Undefined variable from import: penup及Undefined variable from import: goto等错误,无需理会直接运行仍可绘制出该图形。
希望本文所述对大家Python程序设计有所帮助。
来源:https://blog.csdn.net/cccshare/article/details/78170322


猜你喜欢
- 1 自动微分我们在《数值分析》课程中已经学过许多经典的数值微分方法。许多经典的数值微分算法非常快,因为它们只需要计算差商。然而,他们的主要缺
- 本文实例讲述了JavaScript实现点击按钮切换网页背景色的方法。分享给大家供大家参考,具体如下:这里演示JavaScript用按钮随意变
- 用python实现FTP文件传输,包括服务器端和客户端,要求(1)客户端访问服务器端要有一个验证功能(2)可以有多个客户端访问服务器端(3)
- 看了山人表单验证,又看了其他一些验证程序和相关的一些参考资料,写出了一个比较简洁的js表单验证程序。特点是扩展容易,可以方便的添加自己需要的
- 以下插件是我在项目中经常使用的jQuery插件,不见得是最好的,但是我目前接触到的jQuery插件中最适合我的。01. jQuery.Fle
- worker pool简介worker pool其实就是线程池thread pool。对于go来说,直接使用的是goroutine而非线程,
- 目录1.mvc vs mvtmvc:mvt:2.虚拟环境3.安装包4.创建django项目5.创建应用6.模型ORM选项 说明7.后台管理系
- 一般用 createProcessingInstruction 方法创建处理指令指定参数为 "xml","ve
- (本章节主要是一些python的基础语法,具体内容不够详细,以pycharm下调试产生的部分代码为主)(python语法的详细内容请参考官方
- 如何读取PDF文档(或TXT)字符串在Python内部的表示是Unicode编码,首先我们来认识Python中encode()和decode
- 一、导包import pandas as pdimport matplotlib.pyplot as plt二、绘制简单折线数据:有一个Ex
- (GlobalImport全局导入功能)默认新建立的MVC程序中,在Views目录下,新增加了一个_GlobalImport.cshtml文
- 在Flask中配置日志在Flask应用程序中,可以使用Python的标准logging模块来配置日志记录。以下是一个简单的示例,在其中将日志
- 大家好,我是朱小五。大家如果看过我的书《快学Python:自动化办公轻松实战》,会发现Python操作PDF文档内容,主要围绕PDF文档的内
- 通常情况下,当我们要生成一个随机字符串时,总是先创建一个字符池,然后用一个循环和mt_rand()或rand()生成php随机数,从字符池中
- 官方其实已经给出了方案,只不过藏的有点深,在加上网上有很多不太靠谱的帖子误导了我(当然不排除我没理解的原因哈)。所以为了让有些朋友的少走点弯
- 开发新版本 Vue 项目推荐你使用 Vite 脚手架构建开发环境,然而 Vite 脚手架更倾向于构建纯 Web 页面,而不是桌面应用,因此开
- 可以任意转载,但转载时必须标明原作者charlee、原始链接http://tech.idv2.com/2008/11/03/python-m
- 每个浏览器都有自己的默认样式,这是一段预定义的CSS,用以简单地呈现网页。在Firefox中的地址栏中输入resource://gre/re
- 0x00 起因接触网安快一年了,爱收集一些字典啊敏感目录文件啊什么的。收集多了难免有重复,并且有的也需要合并使用方便。自己就写了一个小小的脚