如何在MATLAB中显示以特定角度定位的箭头?

时间:2009-11-26 11:03:55

标签: matlab plot angle

我在MATLAB工作,我遇到了一个非常简单的问题:我有一个由其位置(x,y)theta(一个角度,以度为单位)定义的对象。我想绘制点并添加一个箭头,从该点开始并指向角度定义的方向。它实际上甚至不必是一个箭头,任何图形显示角度值的东西都可以!

这是一张图片,展示了我想要绘制的东西:

删除了死亡的ImageShack链接

3 个答案:

答案 0 :(得分:14)

箭头()绘图功能绘制这样的箭头。取你的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>功能>图形>专业绘图部分。在命令行执行“doc quiver”并浏览。

答案 1 :(得分:8)

如果您想尝试制作与您链接的图片类似的内容,可以使用以下代码来帮助您完成此操作(注意:您首先必须下载提交内容{{3} } arrow.m上的Erik Johnson,我总是喜欢用它来生成任何形状和大小的箭头):

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

这就是它的样子:

MathWorks File Exchange

然后,您可以使用enter image description here函数向图中添加文本(角度和坐标值)。

答案 2 :(得分:2)

这是一个部分答案,我希望你能弄明白其余部分。我启动了数字编辑器并打开了绘图工具。我把调色板上的箭头拖到我的身上。然后我生成了一个m文件。其中包括以下行:

注释(图1,'箭头',[0.1489 0.2945],[0.5793 0.6481]);

所以,第一对坐标是箭头的开始。你将不得不使用一点三角函数找出尖端(第二对坐标)。如果你用绘图工具做更多的调整,你甚至可能得到小弧。

如果触发器击败你,请告诉我们。哦,我忘记了这一点,但我想你可以想出来吗?