Python绘制动态的521玫瑰花
作者:微小冷 发布时间:2021-05-05 09:31:03
标签:Python,玫瑰花
敲了这么多年代码,每年都得画一些心啊花啊什么的,所以现在常规的已经有些倦怠了,至少也得来个三维图形才看着比较合理,而且光是三维的也没啥意思,最好再加上能动起来。
静态的玫瑰
网上有很多生成玫瑰花的代码,比如下面这个
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
0
投稿
猜你喜欢
- 不固定参数函数在go语言中,允许对函数设置不固定参数。不过需要注意的是,虽然不限制参数数量,但限制了参数的数据类型。从原理分析,不固定参数利
- 今晚终于解决了串口发送的问题,更改代码如下:def write(self, data): if self.aliv
- 写在前面和小伙伴们分享一些Python 网络编程的一些笔记,博文为《Python Cookbook》读书后笔记整理博文涉及内容包括:TCP/
- 乐观锁乐观锁大多是基于数据版本记录机制实现,一般是给数据库表增加一个"version"字段。读取数据时,将此版本号一同读
- 我们的规范到底做到哪一步算是发挥良好的价值?其实一件事物我们理解错根本目的会导致出大不一样的结果,直接反应在设计师到底要体现什么的价值。想想
- 1. 原因(1)js代码是运行在内存中的,代码运行时的所有变量、函数都是保存在内存中。(2)刷新页面,以前申请的内存被释放,重新加载脚本代码
- 前言最近 GitHub 上有个基于 ChatGPT API 的浏览器脚本,openai-translator, 短时间内 star 冲到了
- 本文实例为大家分享了vue实现Input输入框模糊查询方法的具体代码,供大家参考,具体内容如下原理:原生js的indexOf() 方法,该方
- 先看一张我绘制的原理图原理图setImmediate 也是宏任务,在 Node 环境下,微任务还有 process.nextTickJS 中
- 目录1.列表2.使用格式3.一些很有用的函数4.元组 tuple5.元组的常用函数1.列表python没有数组,而是引入了列表(list),
- 语法:replace(self, to_replace=None, value=None, inplace=False, limit=Non
- 前言还记得这个九九乘法表吗,这次课后相信你可以用代码给你的小弟弟妹妹们变出这份“葵花宝典”。循环如果要把循环翻译成机器语言,那他对应的可以是
- 前言:之前自己做一个uni-app的项目的时候前端需要实现一个比较复杂的动态tab和swiper切换的功能,但是由于自己前端抠脚的原因没有写
- 先来了解下什么是数据库连接池数据库连接池技术的思想非常简单,将数据库连接作为对象存储在一个Vector对象中,一旦数据库连接建立后,不同的数
- 重复的数据可能有这样两种情况,第一种: 表中只有某些字段一样,第二种是两行记录完全一样。一、对于部分字段重复数据的删除 1.查询重复的数据
- 目录前言二叉树节点定义递归构建二叉树前言本文的内容是数据结构中二叉树部分最基础的,之所以写一下主要是为了方便刷题的时候,能够在自己电脑上很快
- go-ini的分区go-ini的多个配置项通过分区(section)来划分。有默认(空)分区和命名的分区,没有给分区命名就是默认分区,默认分
- 一、分析网页1. 打开网页,在搜索框输入百度翻译并进入百度翻译网站中。F12调出开发者工具,点击Network(网络)\ Fetch/XHR
- 目录概述语法一、创建和初始化切片make字面量二、使用切片赋值和切片切片增长遍历切片总结总示例示例一 两个slice是否相等示例
- 其实我之前已经有文章详细解释了页校验和:How to tell if the IO subsystem is causing corrupt