利用python实现蝴蝶曲线

 更新时间:2022年03月07日 08:58:48   作者:帅帅de三叔  
这篇文章主要介绍了如何利用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 优美蝴蝶曲线效果图

结论:

自然界的很多现象都可以适当的简化用代数曲线和超越曲线来表达,蝴蝶曲线只是其中一种,后续我们会探索更多有趣有意义的曲线图形。

到此这篇关于利用python实现蝴蝶曲线的文章就介绍到这了,更多相关python实现蝴蝶曲线内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • python实现大战外星人小游戏实例代码

    python实现大战外星人小游戏实例代码

    这篇文章主要介绍了python实现大战外星人小游戏,本文通过实例代码给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-12-12
  • python绘制彩虹图

    python绘制彩虹图

    这篇文章主要为大家详细介绍了python绘制彩虹图,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-12-12
  • 如何使用pytorch实现LocallyConnected1D

    如何使用pytorch实现LocallyConnected1D

    由于LocallyConnected1D是Keras中的函数,为了用pytorch实现LocallyConnected1D并在960×33的数据集上进行训练和验证,本文分步骤给大家介绍如何使用pytorch实现LocallyConnected1D,感兴趣的朋友一起看看吧
    2023-09-09
  • 使用Python编写一个粘贴python源代码就能运行的工具

    使用Python编写一个粘贴python源代码就能运行的工具

    以下是一个使用wxPython模块创建带有Memo(文本输入框)和保存按钮的GUI程序示例,点击保存按钮后将Memo内容保存到指定路径下的文件,并提供运行按钮以执行指定的Python脚本,需要的朋友可以参考下
    2025-04-04
  • 在Python中表示一个对象的方法

    在Python中表示一个对象的方法

    这篇文章主要介绍了在Python中表示一个对象的方法,本文通过实例代码给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-06-06
  • python编码问题汇总

    python编码问题汇总

    这篇文章主要给大家分享的是python编码问题汇总,字符编码简单介绍和发展史及使用方法的一些介绍,文章内容详细,具有一定的参考价值,需要的小伙伴可以参考一下
    2022-03-03
  • python 和c++实现旋转矩阵到欧拉角的变换方式

    python 和c++实现旋转矩阵到欧拉角的变换方式

    今天小编就为大家分享一篇python 和c++实现旋转矩阵到欧拉角的变换方式,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-12-12
  • Python数据可视化之matplotlib.pyplot绘图的基本参数详解

    Python数据可视化之matplotlib.pyplot绘图的基本参数详解

    matplotlib.pyplot模块是一个功能强大的画图模块,可以对画图的多个参数进行调整,下面这篇文章主要给大家介绍了关于Python数据可视化之matplotlib.pyplot绘图基本参数的相关资料,需要的朋友可以参考下
    2022-04-04
  • 在Apache服务器上同时运行多个Django程序的方法

    在Apache服务器上同时运行多个Django程序的方法

    这篇文章主要介绍了在Apache服务器上同时运行多个Django程序的方法,Django是Python各色高人气web框架中最为著名的一个,需要的朋友可以参考下
    2015-07-07
  • 浅析python 内置字符串处理函数的使用方法

    浅析python 内置字符串处理函数的使用方法

    这篇文章主要介绍了python 内置字符串处理函数的使用方法,需要的朋友可以参考下
    2014-06-06

最新评论