網站首頁 編程語言 正文
導言:
接上期,我們在極坐標下用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
相關推薦
- 2022-08-05 C語言示例講解if?else語句的用法_C 語言
- 2022-10-05 python中內置庫os與sys模塊的詳細介紹_python
- 2023-03-16 Android虛擬機Dalvik和ART科普_Android
- 2022-08-22 詳解golang執行Linux?shell命令完整場景下的使用方法_Golang
- 2023-03-19 Kotlin?WorkManager使用方法詳解_Android
- 2022-07-20 react中事件處理與柯里化的實現_React
- 2022-06-12 SQLServer只賦予創建表權限的全過程_MsSql
- 2022-12-07 【Chrome】瀏覽器控制臺設置成中文
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支