Python绘制动态的521玫瑰花

 更新时间:2023年05月21日 08:59:00   作者:微小冷  
敲了这么多年代码,每年都得画一些心啊花啊什么的,所以现在常规的已经有些倦怠了,至少也得来个三维图形才看着比较合理,所以本文就来绘制一个动态的玫瑰花吧

敲了这么多年代码,每年都得画一些心啊花啊什么的,所以现在常规的已经有些倦怠了,至少也得来个三维图形才看着比较合理,而且光是三维的也没啥意思,最好再加上能动起来。

静态的玫瑰

网上有很多生成玫瑰花的代码,比如下面这个

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

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

到此这篇关于Python绘制动态的521玫瑰花的文章就介绍到这了,更多相关Python玫瑰花内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • python网络编程之多线程同时接受和发送

    python网络编程之多线程同时接受和发送

    这篇文章主要为大家详细介绍了python网络编程之多线程同时接受和发送,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-09-09
  • NumPy数组排序、过滤与随机数生成详解

    NumPy数组排序、过滤与随机数生成详解

    这篇文章主要详细给大家介绍了NumPy数组排序、过滤与随机数生成,文中通过代码示例给大家讲解的非常详细,对大家学习NumPy有一定的帮助,需要的朋友可以参考下
    2024-05-05
  • Django DRF Token认证基本使用小结

    Django DRF Token认证基本使用小结

    本文介绍了在DjangoRestFramework中使用Token进行用户认证,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2025-12-12
  • pandas中关于nan的处理方式

    pandas中关于nan的处理方式

    这篇文章主要介绍了pandas中关于nan的处理方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-02-02
  • Python制作运行进度条的实现效果(代码运行不无聊)

    Python制作运行进度条的实现效果(代码运行不无聊)

    这篇文章主要介绍了Python制作运行进度条的实现效果(代码运行不无聊),本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-02-02
  • 在Python中使用代理IP的方法详解

    在Python中使用代理IP的方法详解

    在网络爬虫开发中,使用代理IP是非常常见的技巧,Python作为一门强大的编程语言,也提供了很多方法来使用代理IP,下面,我将就如何在Python中使用代理IP进行详细的阐述,并举例说明,需要的朋友可以参考下
    2023-07-07
  • 举例讲解Python的Tornado框架实现数据可视化的教程

    举例讲解Python的Tornado框架实现数据可视化的教程

    这篇文章主要介绍了举例讲解Python的Tornado框架实现数据可视化的教程,Tornado是一个异步的高人气开发框架,需要的朋友可以参考下
    2015-05-05
  • python 教程之blinker 信号库

    python 教程之blinker 信号库

    这篇文章主要介绍了python 教程之blinker 信号库,文章基于python的相关资料展开详细的内容说明。具有一定的参考价价值,需要的小伙伴可以参考一下
    2022-05-05
  • python操作sqlite的CRUD实例分析

    python操作sqlite的CRUD实例分析

    这篇文章主要介绍了python操作sqlite的CRUD实现方法,涉及Python操作SQLite数据库CURD相关技巧,需要的朋友可以参考下
    2015-05-05
  • python使用tcp实现局域网内文件传输

    python使用tcp实现局域网内文件传输

    这篇文章主要介绍了python使用tcp实现局域网内文件传输,文件包括文本,图片,视频等,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-07-07

最新评论