我在 MATLAB 中工作,但遇到了一个非常简单的问题:我有一个由它的位置(x,y)
和theta
(角度,以度为单位)定义的对象。我想绘制该点并添加一个箭头,从该点开始并指向角度定义的方向。它实际上甚至不必是箭头,任何以图形方式显示角度值的东西都可以!
这是一张图片,显示了我正在尝试绘制的那种东西:
删除了无效的 ImageShack 链接
quiver() 绘图函数像这样绘制箭头。获取您的 theta 值并将其转换为 (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 > Functions > Graphics > Specialized Plotting 部分。在命令行中执行“doc quiver”并四处浏览。
如果您想尝试制作看起来像您链接到的图像的东西,这里有一些代码可以帮助您做到这一点(注意:您首先必须在MathWorks File Exchange上下载Erik Johnson的提交arrow.m,我总是喜欢用于生成任何形状和大小的箭头):
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]);
因此,第一对坐标是箭头的起点。您将不得不使用一点三角函数来找出尖端(第二对坐标)。如果您对绘图工具进行更多摆弄,您甚至可以得到小弧线。
让我们知道触发器是否击败了您。哦,我忘了画重点,但我想你能弄清楚吗?