アニメーションの特殊なマークについて

4 ビュー (過去 30 日間)
irosy
irosy 2023 年 1 月 29 日
コメント済み: irosy 2023 年 1 月 29 日
データに(x,y,theta[rad])があるとして,xy平面上をある軌道に従って,進む様子をアニメーションにしたいと考えています.想定しているのは平行二輪車で,thetaは軌道の接線とx軸がなす角度です.今はこちらのリンク(https://jp.mathworks.com/help/matlab/creating_plots/trace-marker-along-line.html?s_eid=PSM_29435)の手法を参考にしていますが,丸い円の中に矢印をつけてそのマーカーの姿勢角をthetaのデータを用いて可視化したいです.
なにか良い方法はございませんでしょうか?

採用された回答

交感神経優位なあかべぇ
交感神経優位なあかべぇ 2023 年 1 月 29 日
編集済み: 交感神経優位なあかべぇ 2023 年 1 月 29 日
丸い円の中に矢印をつける方法は、quiverを使用するといいと思います。
x = 3;
y = 2;
theta = (1/8) * pi;
a = axes('XLim', [0,5], 'YLim', [0,5], 'NextPlot', 'add');
quiver(a,x,y,cos(theta),sin(theta),'Marker', 'o', 'MaxHeadSize', 0.5);
  2 件のコメント
Atsushi Ueno
Atsushi Ueno 2023 年 1 月 29 日
quiver関数の使用には同意です。本来ベクトル分布を図示する為の関数ですが、矢印単体を描画する事も出来ます。質問に挙がっている手法に追記する形で動かしてみました。
x = linspace(0,10,1000);
y = sin(x);
t = atan(cos(x)); % 追記:角度データ
xp = cos(0:pi/6:2*pi); % 追記:円描画用データ
yp = sin(0:pi/6:2*pi); % 追記:円描画用データ
plot(x,y)
hold on
p = plot(x(1)+xp,y(1)+yp,'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; % 変更:円描画用データを追加
p.YData = y(k)+yp; % 変更:円描画用データを追加
q.XData = x(k); % 追記:矢印の位置を動かす
q.YData = y(k); % 追記:矢印の位置を動かす
q.UData = cos(t(k)); % 追記:矢印の角度を動かす
q.VData = sin(t(k)); % 追記:矢印の角度を動かす
drawnow
end
irosy
irosy 2023 年 1 月 29 日
具体的なコードまでありがとうございます!大変参考になりました!

サインインしてコメントする。

その他の回答 (0 件)

カテゴリ

Help Center および File Exchangeベクトル場 についてさらに検索

製品


リリース

R2022b

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!