アニメーションで動く図形の作成方法について
10 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
irosy
am 18 Feb. 2023
Kommentiert: irosy
am 18 Feb. 2023
以前こちらで質問した内容の踏襲となります.添付の画像のような正方形とその重心からでてくる矢印で表したいのですが,教えていただいたプログラムですと円を4分割して正方形の形にはできたものの,正方形自身は回転しないため困っています.恐縮ですがどなたかご助言お願い致します.
0 Kommentare
Akzeptierte Antwort
Atsushi Ueno
am 18 Feb. 2023
>円を4分割して正方形の形にはできたものの
「円を描画する座標の角度分解能(0:pi/N:2*pi)において、Nの値を大きくすれば滑らかな円に、逆にNの値を小さくすれば多角形になりますが、N=2 (角度分解能:90°)とすれば円ではなく正方形になる」という意味だと認識しました。
>正方形自身は回転しないため困っています
以前の回答ではxp,ypは1行13列で、円(実は12角形)を回転させずに描画していました。
今回はN行5列(N行はx,y,tの長さ)(5列は四角形+1の座標)で、四角形を矢印と同様に回転させて描画しました。
更に pi/4 加算したのは四角形を45°回転させる為です。(四角形の角でなく面を前向きにする事に拘っただけ)
x = linspace(0,10,1000);
y = sin(x);
t = atan(cos(x));
xp = cos(t' + pi/4 + (0:pi/2:2*pi)); % 変更:経路に沿った四角形の相対座標を予め計算しておく
yp = sin(t' + pi/4 + (0:pi/2:2*pi)); % 変更:経路に沿った四角形の相対座標を予め計算しておく
plot(x,y)
hold on
p = plot(x(1)+xp(1,:),y(1)+yp(1,:),'r'); % 変更:最初の位置と角度で四角形を描画する
q = quiver(x(1),y(1),cos(t(1)),sin(t(1)));
hold off
xlim([0 10]);
ylim([-3 3]);
axis manual
for k = 2:length(x)
p.XData = x(k)+xp(k,:); % 変更:四角形の座標データを経路上の位置と角度で更新する
p.YData = y(k)+yp(k,:); % 変更:四角形の座標データを経路上の位置と角度で更新する
q.XData = x(k);
q.YData = y(k);
q.UData = cos(t(k));
q.VData = sin(t(k));
drawnow
end
Weitere Antworten (0)
Siehe auch
Kategorien
Mehr zu アニメーション finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!