Как отобразить стрелку, расположенную под определенным углом в MATLAB?
Я работаю в MATLAB, и у меня возникла очень простая проблема: у меня есть объект, определяемый его позицией (x,y)
и theta
(угол в градусах). Я хотел бы построить точку и добавить стрелку, начиная с точки и указывая на направление, определяемое углом. На самом деле это даже не должна быть стрелкой, что-то графическое отображение значения угла будет делать!
Вот изображение, показывающее то, что я пытаюсь сделать:
удалена мертвая ссылка ImageShack
Ответы
Ответ 1
Функция построения колчана() рисует стрелки следующим образом. Возьмите свое значение 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 > Функции > Графикa > Специализированный график. Сделайте "doc quiver" в командной строке и просмотрите.
Ответ 2
Если вы хотите попробовать и сделать что-то похожее на изображение, с которым вы связались, вот какой-то код, который поможет вам это сделать ( ПРИМЕЧАНИЕ: вам сначала нужно будет загрузить представление arrow.m Эрик Джонсон на 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
.
Ответ 3
Здесь частичный ответ, я ожидаю, что вы сможете выяснить остальное. Я запустил редактор фигур и открыл инструменты сюжета. Я вытащил стрелу из палитры на мою фигуру. Затем я сгенерировал m файл. Это включало строку:
аннотация (рисунок 1, 'стрелка', [0.1489 0.2945], [0.5793 0.6481]);
Итак, первая пара координат - это начало стрелки. Вам нужно будет выяснить конец (вторую пару координат), используя немного тригонометрии. Вы даже можете получить маленькую дугу, если вы еще немного поиграете с инструментами сюжета.
Сообщите нам, если триг побеждает вас. О, и я забыл задуматься над этим, но я думаю, вы можете понять это?