python之turtle模块-黄金螺线
时间:2022-07-22
本文章向大家介绍python之turtle模块-黄金螺线,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
在几何学中,黄金螺线属于对数螺线,其增长因子为φ,即黄金比率,数值为0.618。也就是说,黄金螺线每旋转四分之一圈,其半径就变成原来的0.618。
一直有一种传说,在鹦鹉螺以及一些动物角质体上,或者有甲壳的软体动物身上,都曾发现过“黄金螺线”。不免让人感叹大自然的神奇!
但事实上不同动物的甲壳形成的方式千差万别,受各种自身因素和自然因素的影响。黄金螺线中每一个1/4圆上每一点的曲率是相等的,但黄金螺线由多个半径大小成黄金比例关系的1/4圆构成,因此曲率在每个1/4圆的交接的地方是不连续的,也就是说整个黄金螺线的曲率并不连续。对于一个时时刻刻都在生长的甲壳来说,这显然是不科学的。
所以说,鹦鹉螺身上的螺线是一种天然螺线,但绝不可能是黄金螺线。
今天就来讲讲,如何用Python来做一个黄金螺线。
import turtle
import math
# 定义画多边形的函数
def polyline(t, n, length, angle):
for i in range(n):
t.fd(length)
t.lt(angle)
# 定义画弧线的函数
def arc(t, r, angle):
arc_length = 2 * math.pi * r * angle / 360
n = int(arc_length / 3) + 1
step_length = arc_length / n
step_angle = float(angle) / n
polyline(t, n, step_length, step_angle)
# 新建turtle对象实例
bob = turtle.Turtle()
# 向右移动300,箭头朝上,移动到画布右侧
bob.fd(300)
bob.lt(90)
# 以300为半径,开始画1/4圆
r = 300
for i in range(10):
# 螺线用红色
bob.color('red')
# 画1/4圆
arc(bob, r, 90)
# 直线用黑色
bob.color('black')
bob.lt(90)
bob.fd(r)
bob.bk(r)
bob.rt(90)
# 更改半径,乘上黄金比例
r = r * 0.618
turtle.mainloop()
结果如下:
- 在ASP.NET应用启动的时候初始化的几种方法
- [C#6] 8-异常增强
- 信息超新星的诞生
- jquery mobile 移动web(2)
- [腾讯社区开放平台].NET SDK基于New BSD协议开源
- IIS7.5上的REST服务的Put操作发生HTTP Error 405.0 - Method Not Allowed 解决方法
- 使用 asp.net mvc和 jQuery UI 控件包
- jquery mobile 移动web(1)
- WordPress Plugin Boilerplate:一个WordPress 插件开发模板(框架)
- [C#6] 5-自动属性增强
- React多页面应用1
- jQuery操作Select
- MSDN杂志上的Windows Phone相关文章
- WCF Data Service工具包
- 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 数组属性和方法