利用python实现蝴蝶曲线
作者:帅帅de三叔 发布时间:2022-09-30 18:51:51
标签:python,实现,蝴蝶,曲线
导言:
接上期,我们在极坐标下用python画了圆,心形线,玫瑰线,阿基米德螺线和双纽线5大常规曲线外,后来发现还漏了好一些漂亮且有意思的的曲线,今天就来讲一讲蝴蝶曲线。
一、什么是蝴蝶曲线?
蝴蝶曲线是平面上一类代数曲线,最初由美国南密西西比大学特普尔·费伊(Temple H·Fay)发现,因其形状宛如一只翩翩起舞的蝴蝶,故为其取美日“蝴蝶曲线”。
极坐标系下蝴蝶曲线方程为:
使用参数方程描述为:
二、画一个最简单的蝴蝶曲线
有了蝴蝶曲线在极坐标下的曲线方程之后,我们就可以进行描点法画出其图形,先从最简单的蝴蝶曲线入手。
import matplotlib.pyplot as plt
import math
thetas =[] #用来存放极角
rhos = [] #用来存放极径
for i in range(-181, 181):
theta = i*math.pi/180 #角度转弧度
rho = math.exp(math.cos(theta)) - 2*math.cos(4*theta)+math.pow(math.sin(theta/12), 5) #极径
thetas.append(theta)
rhos.append(rho)
fig = plt.figure() #新建画布
plt.polar(thetas, rhos, color = "red") #极坐标画图
plt.title("butterfly")
plt.show()
图1 蝴蝶曲线效果图
三、画一个优美的蝴蝶曲线
在上一部分我们画出了最简单的蝴蝶曲线,从效果图只能看到大致呈现蝴蝶形状,
通过改变这个方程中的变量θ,可以得到不同形状与方向的蝴蝶曲线。如果再施以复杂的组合和变换,我们看到的就完全称得上是一幅艺术品了。
import matplotlib.pyplot as plt
import numpy as np
import math
X = []
Y = []
theta =0
for theta in np.linspace(0, math.pi*20, 10001):
x = math.cos(theta)*(math.exp(math.cos(theta)) - 2*math.cos(4*theta) + math.pow(math.sin(theta/12),5))
y = math.sin(theta)*(math.exp(math.cos(theta)) - 2*math.cos(4*theta) + math.pow(math.sin(theta/12),5))
X.append(x)
Y.append(y)
fig = plt.figure() #新建画布
plt.plot(Y, X, color = "red", linewidth = 0.2) #极坐标画图
plt.title("butterfly")
plt.show()
图2 优美蝴蝶曲线效果图
结论:
自然界的很多现象都可以适当的简化用代数曲线和超越曲线来表达,蝴蝶曲线只是其中一种,后续我们会探索更多有趣有意义的曲线图形。
来源:https://blog.csdn.net/zengbowengood/article/details/123317306


猜你喜欢
- 提起数据库,第一个想到的公司,一般都会是Oracle。该公司成立于1977年,最初是一家专门开发数据库的公司。Oracle在数据库领域一直处
- PHP在运行时, 针对严重程度不同的错误,会给以不同的提示。 eg:在$a没声明时,直接相加,值为NULL,相加时当成0来算.但是,却提示N
- 第一次使用csdn写文章,写得不好还请见谅。(运行环境:python3.6)下了一个带密码的压缩包文件,作为一个刚学python的新手,想着
- 这篇文章主要介绍了Python线程条件变量Condition原理解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习
- 最近实现了一些微信的简单玩法 我们可以通过网页版的微信微信网页版,扫码登录后去抓包爬取信息,还可以post去发送信息。》》安装it
- Linux+apache+mysql+python+mod_python+Django说明:系统rhel 5.3,默认安装httpd、mys
- SQL Server TEXT、NTEXT字段拆分的问题引用的内容:SET NOCOUNT ON CREATE 
- 为了方便各位朋友,本文收集了一些对Web开发人员非常有用的手册,记得推荐一下哦。HTML 速查手册HTML/XTML in one page
- 先看看关于call()的官方解释,“调用一个对象的一个方法,以另一个对象替换当前对象。”,看了这样的解释,或许让你更摸不着头脑了。看例子:v
- #第一种def delRepeat(liebiao): for x in liebiao: while li
- python的数据类型可变不可变1、什么是可变不可变首先说一下什么是Python数据的可变不可变。我们都知道定义变量的时候,是先创建一块内存
- 这个代码不是很完善,能实现基本的功能;另外有个问题,就是divOpenWin层的定位问题:发现如果其属性设置成display:none,那么
- 这篇文章我们来讲讲如何在python使用bs4模块返回值中正确使用find和find_all来取值。我们先来看看find函数在两种场景使用:
- 本文实例讲述了Python使用回溯法解决迷宫问题。分享给大家供大家参考,具体如下:问题给定一个迷宫,入口已知。问是否有路径从入口到出口,若有
- 这里介绍几个常用的列表操作添加元素添加元素使用列表的内置方法appendnumber = [1, 2, 3, 4]number.append
- 注:以下所有操作都在CentOS 6.5 x86_64位系统下完成。#准备工作#在安装MySQL之前,请确保已经使用yum安装了以下各类基础
- 产生batch数据输入data中每个样本可以有多个特征,和一个标签,最好都是numpy.array格式。datas = [data1, da
- 前言这篇文章主要介绍了使用Python画了一棵圣诞树的实例代码,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价
- 强大的group by 代码如下:select stdname, isnull(sum( case stdsubject whe
- 把这两个很普遍性的网友比较关心的问题总结回答一下。in和exist的区别从sql编程角度来说,in直观,exists不直观多一个select