Python绘制动态的521玫瑰花
作者:微小冷 时间:2021-05-05 09:31:03
敲了这么多年代码,每年都得画一些心啊花啊什么的,所以现在常规的已经有些倦怠了,至少也得来个三维图形才看着比较合理,而且光是三维的也没啥意思,最好再加上能动起来。
静态的玫瑰
网上有很多生成玫瑰花的代码,比如下面这个
from matplotlib import cm
import matplotlib.pyplot as plt
import numpy as np
[x,t]=np.meshgrid(np.arange(25)/24.0,
np.arange(0,575.5,0.5)/575*17*np.pi-2*np.pi)
p=(np.pi/2)*np.exp(-t/(8*np.pi))
u=1-(1-np.mod(3.6*t,2*np.pi)/np.pi)**4/2
y=2*(x**2-x)**2*np.sin(p)
r=u*(x*np.sin(p)+y*np.cos(p))
X,Y = r*np.cos(t), r*np.sin(t)
Z = u*(x*np.cos(p)-y*np.sin(p))
ax=plt.subplot(projection='3d')
ax.plot_surface(X, Y, Z, lw=0, rstride=1,
cstride=1,cmap=cm.gist_rainbow_r)
plt.axis('off')
plt.show()
效果如下
其公式为
旋转的玫瑰
但是,如果只有这一朵花,就算色彩很绚丽,看久了也会感觉枯燥,所以下面来给这张图片加上一点动作,比如让这朵花在空间中旋转,方法非常简单,只要乘上一个旋转矩阵就OK为了书写方便,记Sθ=sinθ,Cθ=cosθ,可列出下表。
下面的代码的含义就是,玫瑰花绕着Z轴旋转。
from matplotlib import animation
import imageio
cos = lambda th : np.cos(np.deg2rad(th))
sin = lambda th : np.sin(np.deg2rad(th))
# 此为旋转矩阵
Rz = lambda th : np.array([
[cos(th) , -sin(th), 0],
[sin(th), cos(th), 0],
[0 , 0, 1]])
xyz = np.array([X,Y,Z]).reshape(3,-1)
gifImgs = []
for n in np.arange(0,30,1):
xd,yd,zd = (Rx(n)@Ry(n)@Rz(n)@xyz).reshape(3,1151,25)
ax = plt.subplot(projection='3d')
ax.plot_surface(xd,yd,zd, lw=0, rstride=1,
cstride=1,cmap=cm.gist_rainbow_r)
plt.axis('off')
plt.savefig("%d.jpg" % n)
gifImgs.append(imageio.imread("%d.jpg" % n))
imageio.mimsave("test.gif",gifImgs,fps=5)
ani = animation.FuncAnimation(fig, animate,
range(0, 360, 2), interval=25, blit=True)
#plt.show()
ani.save("zyx.gif")
但最后的效果不太理想,貌似在抽搐,感觉非常离奇
来源:https://blog.csdn.net/m0_37816922/article/details/130771170
标签:Python,玫瑰花
![](/images/zang.png)
![](/images/jiucuo.png)
猜你喜欢
python优化数据预处理方法Pandas pipe详解
2021-12-27 06:34:51
![](https://img.aspxhome.com/file/2023/7/83767_0s.png)
JS截取字符串常用方法详细整理
2023-07-04 03:37:49
python生成器generator:深度学习读取batch图片的操作
2022-07-31 08:43:06
Python多线程:主线程等待所有子线程结束代码
2021-03-18 05:31:53
基python实现多线程网页爬虫
2023-10-30 00:58:48
python代码的几种常见加密方式分享
2021-05-19 02:14:56
![](https://img.aspxhome.com/file/2023/1/90781_0s.png)
Pytorch平均池化nn.AvgPool2d()使用方法实例
2023-09-30 02:49:35
![](https://img.aspxhome.com/file/2023/1/104921_0s.png)
使用Python抓取模板之家的CSS模板
2022-04-09 18:35:52
![](https://img.aspxhome.com/file/2023/7/79457_0s.jpg)
一文带你吃透Python中的os和sys模块
2022-01-04 20:42:55
![](https://img.aspxhome.com/file/2023/0/76010_0s.png)
asp和php下textarea提交大量数据发生丢失的解决方法
2023-10-26 09:01:43
各种鼠标经过图片边框加粗效果整理
2007-09-29 21:43:00
给展示性图片增加提示工具条(黑白效果)
2007-10-20 14:21:00
python中requests模块的使用方法
2021-12-27 23:16:29
python和pygame实现简单俄罗斯方块游戏
2022-10-04 20:00:49
![](https://img.aspxhome.com/file/2023/2/69532_0s.gif)
Go语言Grpc Stream的实现
2023-08-07 06:19:23
使用python脚本实现查询火车票工具
2021-03-10 05:48:54
![](https://img.aspxhome.com/file/2023/0/105340_0s.png)
浮动元素对浏览器的支持
2008-02-02 10:05:00
python利用xpath爬取网上数据并存储到django模型中
2022-01-19 03:46:51
python图像处理基本操作总结(PIL库、Matplotlib及Numpy)
2022-01-26 00:28:50
![](https://img.aspxhome.com/file/2023/8/78568_0s.png)
numpy中的transpose函数中具体使用方法
2023-04-28 23:46:44
![](https://img.aspxhome.com/file/2023/2/81582_0s.png)