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

10 次查看(过去 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のデータを用いて可視化したいです.
なにか良い方法はございませんでしょうか?

采纳的回答

交感神経優位なあかべぇ
丸い円の中に矢印をつける方法は、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 CenterFile Exchange 中查找有关 2 次元および 3 次元プロット 的更多信息

产品


版本

R2022b

Community Treasure Hunt

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

Start Hunting!