从混乱到秩序:
一个随机多边形,将其各个顶点移动到原来各边的中点,不断迭代,最终会形成一个椭圆!
下面附上绘图的代码:
import numpy as np
import matplotlib.pyplot as plt
from matplotlib.animation import FuncAnimation
np.random.seed(np.random.randint(1e9))
fig, ax = plt.subplots()
#随机生成N个点的坐标
N = 30
xdata = list(np.random.rand(N)*100)
xdata.append(xdata[0]) # 封闭
ydata = list(np.random.rand(N)*100)
ydata.append(ydata[0]) # 封闭
ln, = plt.plot([], [], 'r*-', animated=True)
ax.set_title("迭代成椭圆",color ='b',fontsize =14)
def init():
ax.set_xlim(0, 100)
ax.set_ylim(0, 100)
return ln, #注意这个逗号。返回的是元组
def update(frame):
for i in range(len(xdata)-1):
xdata[i] = 0.5*(xdata[i]+xdata[i+1])
ydata[i] =0.5* (ydata[i]+ydata[i+1])
xdata[-1] = xdata[0]# 封闭
ydata[-1] = ydata[0]# 封闭
ln.set_data(xdata, ydata)
min_x, max_x = min(xdata), max(xdata)
span_x = max_x - min_x
min_y, max_y = min(ydata), max(ydata)
span_y = max_y - min_y
ax.set_xlim(min_x- 0.2*span_x , max_x+ 0.2*span_x)
ax.set_ylim(min_y- 0.2*span_y , max_y+ 0.2*span_y)
return ln, #注意这个逗号。返回的是元组
ani = FuncAnimation(fig, update, frames=range(1000),
init_func=init, blit=True, interval=100)
#ani.save('t.gif', fps=20) #可保存动画,fps :每秒帧数,帧率。
plt.show()#若前面保存了动画,则这里只显示最后一帧
本文分享自 Python可视化编程机器学习OpenCV 微信公众号,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。
本文参与 腾讯云自媒体同步曝光计划 ,欢迎热爱写作的你一起参与!
扫码关注腾讯云开发者
领取腾讯云代金券
Copyright © 2013 - 2025 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司 ICP备案/许可证号:粤B2-20090059 深公网安备号 44030502008569
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287
Copyright © 2013 - 2025 Tencent Cloud.
All Rights Reserved. 腾讯云 版权所有