円を立てて回転させる3Dアニメ

アフィン変換のアニメ化にハマって、円を立てて回転させるアニメに挑戦し、配列の使い方が分からず、結構苦労してやっと完成しました。サンプルアニメとソースコードを書きます。2023.01.22

# matplotlibで円を立てて回した様子を表示
# 2023.01.22 by Kero

import matplotlib.pyplot as plt
import numpy as np
from matplotlib.animation import ArtistAnimation

fig = plt.figure()
ax1 = fig.add_subplot(111, projection='3d') # ここまで常套句。

t = np.linspace(0, np.pi * 2, 180) # 図(円)を2度ずつ刻んで描画。
z = np.sin(t) # 縦描画におけるz座標の配列を作っておく。

frames = [] # 動画フィルムを初期設定。
for i in np.linspace(0, np.pi * 20, 360): # 10回転。1回転は10度キザミ。
    x = np.cos(t) * np.cos(i) # cos(t)はxy面への写像。そのx座標の配列ができる。
    y = np.cos(t) * np.sin(i) # xy面への写像のy座標の配列ができる。
    frame = ax1.plot(x, y, z, color='blue') # 縦になった円が描かれる。   
    frames.append(frame) # 動画フィルムの1コマとして焼きつける。
    
ani = ArtistAnimation(fig, frames, interval=100) # 動画のおまじまい。
 
plt.show() # グラフ表示。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です