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()

效果如下

Python绘制动态的521玫瑰花

其公式为

Python绘制动态的521玫瑰花

旋转的玫瑰

但是,如果只有这一朵花,就算色彩很绚丽,看久了也会感觉枯燥,所以下面来给这张图片加上一点动作,比如让这朵花在空间中旋转,方法非常简单,只要乘上一个旋转矩阵就OK为了书写方便,记Sθ=sinθ,Cθ=cosθ,可列出下表。

Python绘制动态的521玫瑰花

下面的代码的含义就是,玫瑰花绕着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")

但最后的效果不太理想,貌似在抽搐,感觉非常离奇

Python绘制动态的521玫瑰花

来源:https://blog.csdn.net/m0_37816922/article/details/130771170

标签:Python,玫瑰花
0
投稿

猜你喜欢

  • 小小聊天室Python代码实现

    2022-05-27 15:23:44
  • python实现的简单RPG游戏流程实例

    2021-11-13 21:29:53
  • js实现屏蔽默认快捷键调用自定义事件示例

    2023-09-05 09:28:31
  • MySQL通透详解架构设计

    2024-01-27 19:00:51
  • python:print格式化输出到文件的实例

    2023-08-25 06:40:53
  • SQL Server从安装到建库为新手寻找捷径

    2009-01-13 13:22:00
  • 解决Python找不到ssl模块问题 No module named _ssl的方法

    2022-08-23 18:01:25
  • 多种语言下获取当前页完整URL及其参数

    2022-02-28 23:23:29
  • 一文详解Go中方法接收器的选择

    2024-05-28 15:36:32
  • 详解用python -m http.server搭一个简易的本地局域网

    2023-09-29 13:03:34
  • SQL 特殊语句(学习笔记)

    2024-01-13 16:24:40
  • python标准库sys和OS的函数使用方法与实例详解

    2022-06-24 20:22:42
  • 修改mysql密码与忘记mysql密码的处理方法

    2024-01-23 21:53:48
  • js 浏览器版本及版本号判断函数2009年

    2024-04-28 09:40:54
  • Vue项目中如何使用Axios封装http请求详解

    2024-04-28 09:19:49
  • go zero微服务实战性能优化极致秒杀

    2023-06-17 03:45:30
  • 一文搞懂Golang 时间和日期相关函数

    2024-02-06 00:29:01
  • SQL Server数据库服务器高性能设置

    2010-11-25 16:00:00
  • 带你理解vue中的v-bind

    2023-07-02 16:52:44
  • Perl的经典用法分享

    2023-07-22 15:17:40
  • asp之家 网络编程 m.aspxhome.com