私は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>関数>グラフィックス>特殊プロットセクションにあります。コマンドラインで「docquiver」を実行し、参照します。
リンクした画像のように見えるものを作成したい場合は、それを行うのに役立つコードを次に示します(注:最初に作成するコード提出物をダウンロードするには arrow.m by Erik Johnson on 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ファイルを生成しました。これには次の行が含まれます。
注釈(図1、 '矢印'、[0.1489 0.2945]、[0.5793 0.6481]);
したがって、座標の最初のペアは矢印の始点です。少しの三角法を使用して、先のとがった端(座標の2番目のペア)を把握する必要があります。プロットツールをいじくり回すと、小さな弧を描くことさえできるかもしれません。
トリガーがあなたを打ち負かすかどうかをお知らせください。ああ、そして私はポイントをプロットするのを忘れました、しかし私はあなたがそれを理解することができると思いますか?