Как мне отобразить стрелку, расположенную под определенным углом в MATLAB?

StackOverflow https://stackoverflow.com/questions/1803043

  •  05-07-2019
  •  | 
  •  

Вопрос

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

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

удалена мертвая ссылка на ImageShack

Это было полезно?

Решение

Функция построения графика quiver() выводит стрелки следующим образом.Возьмите ваше тета-значение и преобразуйте его в декартовы координаты (x, y), представляющие вектор, который вы хотите отобразить в виде стрелки, и используйте их в качестве параметров (u, v) для quiver().

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" в командной строке и просмотрите ее.

Другие советы

Если вы хотите попробовать создать что-то похожее на изображение, на которое вы ссылаетесь, вот некоторый код, который поможет вам это сделать (ПРИМЕЧАНИЕ: сначала вам нужно будет загрузить отправку стрелка.м Автор: Эрик Джонсон на Обмен файлами MathWorks, который мне всегда нравится использовать для создания стрелок любой формы и размера):

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 функция.

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

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top