動圖之一個圓繞另一個圓轉動
# -*- coding: utf-8 -*-
"""
Created on Mon Jun 14 20:22:04 2021
@author: Leslie Lee
"""
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.animation as animation
def coord(time, step, W, w, r1, r2):
'''
r1 為動圓半徑 r2 為靜圓半徑 W 為公轉角速度 w 為自轉角速度 time 為離散時間長度
'''
t = np.arange(0, time, step)
x = np.sin(W*t)*r1
y = np.cos(W*t)*r1
x1 = np.sin(W*t)*(r1+r2)
y1 = np.cos(W*t)*(r1+r2)
x2 = x1 + r1*np.sin(w*t/2)
y2 = y1 - r1*np.cos(w*t/2)
return x, y, x1, y1, x2, y2
time = 500
step = 0.05
r1 = 2
r2 = 2
W = np.deg2rad(3.6)*10
w =np.deg2rad(3.6)*10
x,y,x1,y1,x2,y2 = coord(time, step, W, w, r1, r2)
# 建立 fig
fig = plt.figure()
ax = fig.add_subplot(111, autoscale_on=False, xlim=(-8, 8), ylim=(-8, 8))
ax.grid()
line, = ax.plot([], [], 'o-', lw=2)
time_template = 'time = %.1fs' # 格式化輸出 保留一位浮點數
time_text = ax.text(0.05, 0.9, '', transform=ax.transAxes)
def init():
line.set_data([], [])
time_text.set_text('')
return line, time_text
def animate(i):
thisx = [0, x[i], x1[i], x2[i]]
thisy = [0, y[i], y1[i], y2[i]]
line.set_data(thisx, thisy)
time_text.set_text(time_template % (i*step))
return line, time_text
ani = animation.FuncAnimation(fig, animate, np.arange(0, len(y)),
interval=25, blit=True, init_func=init)
plt.show()
在動畫的基礎上又將軌跡畫了上去
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.animation as animation
def coord(time, step, W, w, r1, r2):
'''
r1 為動圓半徑 r2 為靜圓半徑 外匯跟單gendan5.com W 為公轉角速度 w 為自轉角速度 time 為離散時間長度
'''
t = np.arange(0, time, step)
x = np.sin(W*t)*r1
y = np.cos(W*t)*r1
x1 = np.sin(W*t)*(r1+r2)
y1 = np.cos(W*t)*(r1+r2)
x2 = x1 + r1*np.sin(w*t/2)
y2 = y1 - r1*np.cos(w*t/2)
return x, y, x1, y1, x2, y2
time = 500
step = 0.05
r1 = 2
r2 = 2
W = np.deg2rad(3.6)*10
w =np.deg2rad(3.6)*10
x,y,x1,y1,x2,y2 = coord(time, step, W, w, r1, r2)
fig = plt.figure()
ax = plt.gca()
ax.set_aspect(1)
plt.plot(x, y)
plt.plot(x1, y1)
plt.plot(x2, y2)
line, = ax.plot([], [], 'o-', lw=2)
time_template = 'time = %.1fs' # 格式化輸出 保留一位浮點數
time_text = ax.text(0.05, 0.9, '', transform=ax.transAxes)
def init():
line.set_data([], [])
time_text.set_text('')
return line, time_text
def animate(i):
thisx = [0, x[i], x1[i], x2[i]]
thisy = [0, y[i], y1[i], y2[i]]
line.set_data(thisx, thisy)
time_text.set_text(time_template % (i*step))
return line, time_text
ani = animation.FuncAnimation(fig, animate, np.arange(0, len(y)),
interval=25, blit=True, init_func=init)
plt.show()
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69946337/viewspace-2778907/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 用css畫出中間一個大圓,四周有12個小圓環繞並和大圓是同心CSS
- 旋轉向量合成,兩個圓圈
- Android Reveal圓形Activity轉場動畫Android動畫
- Canvas畫圖-一個比想象中更騷氣的圓(漸變圓環)Canvas
- 一個圓形時鐘
- CSS畫出半圓,四分之一圓,三角等圖形CSS
- AC-DMIS 5.3 平面 、 圓 、 圓(已知,先偏置一個軸,後偏置兩個軸)
- JavaScript 動態圓形鐘錶JavaScript
- Glide實現圓角圖片,以及圓形圖片IDE
- 請使用canvas畫一個橢圓Canvas
- canvas繪製多個圓圈效果Canvas
- 使用canvas繪製圓弧動畫Canvas動畫
- 提供一個Glide靈活載入圓角圖片的方法IDE
- PHP合成圖圓角PHP
- 根據SVG Arc求出其開始角、擺動角和橢圓圓心SVG
- JavaScript 動畫方式彈出圓角框JavaScript動畫
- 圓形、扇形選單,支援移動、桌面
- 用css畫出一個圓圈,裡面有個對號CSS
- CAD繪圖工具——橢圓繪圖
- Kotlin 背景圓頭像圖Kotlin
- CSS圓形圖片效果CSS
- 去掉每個 ul 和 li 前面的圓點
- 用css畫出兩個大圓相交,可以在各自圓及相交部分輸入文字CSS
- JavaScript動態圓形鐘錶效果詳解JavaScript
- canvas繪製圓盤走動鐘錶效果Canvas
- canvas簡單動畫案例(圓圈閃爍漸變動畫)Canvas動畫
- Android把一個View轉成Bitmap+處理帶圓角View轉化後黑邊AndroidView
- PS製作圓角圖片
- echarts 3D圓柱圖Echarts3D
- CGContextRef處理圓形圖片GCContext
- 請使用css畫一個圓,方法可以多種CSS
- 如何用CSS製作一個圓形放大鏡CSS
- Android 實現一個通用的圓角佈局Android
- Flutter 圓形/圓角頭像Flutter
- WebAssembly Demo之Canvas中隨機運動圓球WebCanvas隨機
- SVG點選實現動態放大的圓效果SVG
- 【Openxml】將Openxml的橢圓弧線arcTo轉為Svg的橢圓弧線XMLSVG
- Android自定義View之圖片外形特效——輕鬆實現圓角和圓形圖片AndroidView特效