我在MATLAB工作,我遇到了一个非常简单的问题:我有一个由其位置(x,y)
和theta
(一个角度,以度为单位)定义的对象。我想绘制点并添加一个箭头,从该点开始并指向角度定义的方向。它实际上甚至不必是一个箭头,任何图形显示角度值的东西都可以!
这是一张图片,展示了我想要绘制的东西:
删除了死亡的ImageShack链接
答案 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
这就是它的样子:
答案 2 :(得分:2)
这是一个部分答案,我希望你能弄明白其余部分。我启动了数字编辑器并打开了绘图工具。我把调色板上的箭头拖到我的身上。然后我生成了一个m文件。其中包括以下行:
注释(图1,'箭头',[0.1489 0.2945],[0.5793 0.6481]);
所以,第一对坐标是箭头的开始。你将不得不使用一点三角函数找出尖端(第二对坐标)。如果你用绘图工具做更多的调整,你甚至可能得到小弧。
如果触发器击败你,请告诉我们。哦,我忘记了这一点,但我想你可以想出来吗?