MATLABで特定の角度にある矢印を表示するにはどうすればよいですか?

StackOverflow https://stackoverflow.com/questions/1803043

  •  05-07-2019
  •  | 
  •  

質問

MATLABで作業していて、非常に単純な問題にこだわっています。その位置(x、y) theta で定義されたオブジェクトがあります。 (角度、度)。ポイントをプロットし、ポイントから開始し、角度で定義された方向を指す矢印を追加します。実際には矢印である必要はなく、角度の値をグラフィカルに表示するものなら何でもできます!

これは、私が描画しようとしているものを示す写真です。

死んだImageShackリンクを削除

役に立ちましたか?

解決

quiver()プロット関数は、このように矢印をプロットします。シータ値を取得し、矢印としてプロットするベクトルを表す(x、y)デカルト座標に変換し、それらをquiver()の(u、v)パラメーターとして使用します。

theta = pi/9;
r = 3; % magnitude (length) of arrow to plot
x = 4; y = 5;
u = r * cos(theta); % convert polar (theta,r) to cartesian
v = r * sin(theta);
h = quiver(x,y,u,v);
set(gca, 'XLim', [1 10], 'YLim', [1 10]);

他のプロットタイプを確認するには、Matlabのドキュメントをオンラインでご覧ください。いくつかの放射状プロットを含む、たくさんあります。それらはMATLABにあります>機能>グラフィック>特殊なプロットセクション。 「doc quiver」を実行しますコマンドラインで参照してください。

他のヒント

リンク先の画像のように見えるものを作成したい場合は、そのためのコードをいくつか紹介します(注:まず、提出物をダウンロードする必要があります arrow.m by Erik Johnson MathWorks File Exchange 。これは、あらゆる形状とサイズの矢印を生成するために常に使用します):

x = 1;                          % X coordinate of arrow start
y = 2;                          % Y coordinate of arrow start
theta = pi/4;                   % Angle of arrow, from x-axis
L = 2;                          % Length of arrow
xEnd = x+L*cos(theta);          % X coordinate of arrow end
yEnd = y+L*sin(theta);          % Y coordinate of arrow end
points = linspace(0, theta);    % 100 points from 0 to theta
xCurve = x+(L/2).*cos(points);  % X coordinates of curve
yCurve = y+(L/2).*sin(points);  % Y coordinates of curve
plot(x+[-L L], [y y], '--k');   % Plot dashed line
hold on;                        % Add subsequent plots to the current axes
axis([x+[-L L] y+[-L L]]);      % Set axis limits
axis equal;                     % Make tick increments of each axis equal
arrow([x y], [xEnd yEnd]);      % Plot arrow
plot(xCurve, yCurve, '-k');     % Plot curve
plot(x, y, 'o', 'MarkerEdgeColor', 'k', 'MarkerFaceColor', 'w');  % Plot point

次のようになります。

ここに画像の説明を入力してください

text 関数。

これは部分的な答えです。残りの部分を理解できると思います。フィギュアエディターを起動し、プロットツールを開きました。パレットから図に矢印をドラッグしました。次に、mファイルを生成しました。これには次の行が含まれます:

annotation(figure1、 'arrow'、[0.1489 0.2945]、[0.5793 0.6481]);

つまり、座標の最初のペアは矢印の始点です。少し三角法を使用して、尖った端(2番目の座標ペア)を把握する必要があります。プロットツールをさらにいじり回すと、小さな弧を描くことができるかもしれません。

トリガーがあなたを打ち負かすかどうかをお知らせください。ああ、私はポイントをプロットするのを忘れましたが、あなたはそれを理解できると思いますか?

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top