python 畫心形線 matplotlib
阿新 • • 發佈:2019-01-09
心形線的數學表示式
極座標方程
水平方向: r=a(1-cosθ) 或 r=a(1+cosθ) (a>0) 垂直方向: r=a(1-sinθ) 或 r=a(1+sinθ) (a>0)直角座標方程
心形線的平面直角座標系方程表示式分別為 x^2+y^2+a*x=a*sqrt(x^2+y^2) 和 x^2+y^2-a*x=a*sqrt(x^2+y^2)引數方程
x=a*(2*cos(t)-cos(2*t)) y=a*(2*sin(t)-sin(2*t)) 所圍面積為3/2*PI*a^2,形成的弧長為8a直接生成心形線的python程式碼:
# coding:utf-8 __author__ = 'taohao' import matplotlib.pyplot as plt from matplotlib import animation import numpy as np import math def drawHeart(): t = np.linspace(0, math.pi, 1000) x = np.sin(t) y = np.cos(t) + np.power(x, 2.0/3) plt.plot(x, y, color='red', linewidth=2, label='h') plt.plot(-x, y, color='red', linewidth=2, label='-h') plt.xlabel('t') plt.ylabel('h') plt.ylim(-2, 2) plt.xlim(-2, 2) plt.legend() plt.show() drawHeart()
主要用到了matplotlib庫來進行影象的繪製
用到的心形線方程是上圖所示的方程,使用引數方程的形式來表示
動態生成心形線的python程式碼
# coding:utf-8 __author__ = 'taohao' import matplotlib.pyplot as plt from matplotlib import animation import numpy as np import math figure = plt.figure() axes = plt.axes(xlim=(-2, 2), ylim=(-2, 2)) line1, = axes.plot([], [], color='red', linewidth=2, label='1') line2, = axes.plot([], [], color='red', linewidth=2, label='2') def init(): line1.set_data([], []) line2.set_data([], []) return line1, line2 def animate(i): print i t = np.linspace(0, i/math.pi, 100) x = np.sin(t) y = np.cos(t) + np.power(x, 2.0/3) line1.set_data(x, y) line2.set_data(-x, y) return line1, line2 ani = animation.FuncAnimation(figure, animate, init_func=init, frames=14, interval=200) # ani.save('Heart.mp4') save as mp4 but need to install video-encoder. i did not install it, so this line makes exeception plt.show()
動態生成,需要製作動畫,主要用到了matplotlib中的animation庫