Python之turtle模块-正多边形
时间:2022-07-22
本文章向大家介绍Python之turtle模块-正多边形,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
前面我们用turtle画了正方形,也就是正四边形,虽然我们平时不这么叫它。我们今天来画正多边形。顾名思义就是边数大于等于三条,并且每条边的长度都一样。美国的五角大楼就是正五边形。
八卦阵是一个正八边形
初中老师又浮现在我的脑海里~,当初讲的那些定义又浮现在眼前。我用python画了个示意图,然后用画图板(大神都用ps,我比较接地气)写了个注释,大家就将就着看看吧!
中心角
任何一个正多边形,都可作一个外接圆。多边形的中心就是所作外接圆的圆心,所以每条边的中心角,实际上就是这条边所对的弧的圆心角,因此这个角就是360度÷边数。所以五角大楼的中心角是360/5=72°。
底角
知道了等腰三角形的顶角之后,底角为(180-顶角)/2。这里的顶角就是中心角。
外角
与正多边形的内角相对应的是外角,多边形的外角就是将其中一条边延长并与另一条边相夹的那个角。可以看到180-2*底角=外角,而中心角也是180-2*底角(三角形内角和是180),因此正多边形的外角等于中心角。
初中老师可以休息了,下面我们来看一下如何用tutle来画正五边形的过程。
- 初始状态下箭头水平向右,我们向前移动一个边的长度
- 这时候箭头还是水平向右的,我们需要把它调整到第二条边的方向上。只需要向左旋转一个外角的度数,为360/5=72°。
- 接下来要做的事情就是重复前面的两步,重复四次,把剩下的四条边都画出来。前面也讲过重复的事情可以用循环来做。
下面我们就来写代码实现这个过程。
import turtle
# 定义画多边形的函数,有三个参数
# t是turtle对象,n是多边形的边数,length是边的长度
def polygon(t, n, length):
# 中心角为360/n
angle = 360 / n
# 循环n次画出正n边形的n条边
for i in range(n):
# 画边
t.fd(length)
# 旋转箭头,因为旋转的角度为外角的角度,刚好也等于中心角
t.lt(angle)
# 创建一个turtle对象
bob = turtle.Turtle()
# 画一个正五边形,边长是80
polygon(bob, 5, 80)
# 提起笔往右移动200的距离
bob.pu()
bob.fd(200)
bob.pd()
# 画正八边形
polygon(bob, 8, 50)
turtle.mainloop()
来看看具体执行过程
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- R语言入门之饼图
- 加速Spark编译
- 自定义方便kubectl中pods的管理
- R语言入门之切尾均值(trimmed mean)与绝对中位差(median absolute deviation,mad)
- 盘一盘 Python 特别篇 20 - SciPy 稀疏矩阵
- Spark 3.0.0-SNAPSHOT Access Kerberized HDFS
- Spark Nightly Builds
- R语言入门之基本统计量
- K8S 生态周报| Istio 已修复导致 Pod 崩溃的 bug
- Spark Kubernetes 的源码分析系列 - submit
- 如何交互可视化 Roam Research 局部笔记网络?
- Spark Kubernetes 的源码分析系列 - features
- Spark Kubernetes 的源码分析系列 - scheduler
- 简易Ramdisk 镜像制作(基于Centos7+)
- 在 K8S 部署一个 Spark History Server - 篇1