2009-11-26 2 views
12

Я работаю в MATLAB, и я застрял в очень простой проблеме: у меня есть объект, определяемый его позицией (x,y) и theta (угол в градусах). Я хотел бы построить точку и добавить стрелку, начиная с точки и указывая на направление, определяемое углом. На самом деле это даже не должна быть стрелкой, что угодно, графически показывающее значение угла!Как отобразить стрелку, расположенную под определенным углом в MATLAB?

Вот картина, показывающая вид, что я пытаюсь сделать:

удалить ссылку мертвых ImageShack

ответ

13

Колчан() строит график функций стрелок. Возьмите свое значение theta и преобразуйте его в (x, y) декартовы координаты, представляющие вектор, который вы хотите построить как стрелка, и используйте их как параметры (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 колчан» в командной строке и просмотрите.

2

Вот частичный ответ, я ожидаю, что вы можете выяснить все остальное. Я запустил редактор фигур и открыл инструменты сюжета. Я вытащил стрелу из палитры на мою фигуру. Затем я сгенерировал m-файл. Это включало в себя строку:

аннотация (рисунок1, 'стрелка', [0.1489 0.2945], [0.5793 0.6481]);

Итак, первая пара координат - это начало стрелки. Вам нужно будет выяснить конец (вторую пару координат), используя немного тригонометрии. Вы даже можете получить маленькую дугу, если вы еще немного поиграете с инструментами сюжета.

Сообщите нам, если триг побеждает вас. О, и я забыл задуматься над этим, но я думаю, вы можете понять это?

7

Если вы хотите, чтобы попытаться сделать что-то, похожее на изображение, которое вы связаны, вот некоторый код, чтобы помочь вам сделать это (Примечание: вы должны сначала загрузить представление arrow.m по 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 

а вот что это будет выглядеть так:

enter image description here

Затем вы можете добавить текст в график (для угла и значений координат) с помощью функции text.

Смежные вопросы