Лучше полагаться на один из встроенных в полярных функций замышляет сделать это. Я думаю, что тот, который больше всего похож на ваши потребности, будет compass
. Он по существу рисует стрелку, указывающую от центра к точке (определенной в декартовых координатах) на полярном участке.
theta = deg2rad(130);
% Your speed in m/s
speed = 5;
hax = axes();
c = compass(hax, speed * cos(theta), speed * sin(theta));
% Change the view to orient the axes the way you've drawn
view([90 -90])
Тогда для того, чтобы изменить отношение и скорость, вы просто вызовите функцию compass
снова с новой несущей/скорости.
new_theta = deg2rad(new_angle_degrees);
c = compass(hax, new_speed * cos(new_theta), new_speed * sin(new_theta));
Другие варианты включают полярные Plotting polar
и polarplot
, которые принимают полярные координаты, но не имеют головы стрелка. Если вам не нравится полярный сюжет, вы всегда можете пойти с quiver
на декартовых осях (убедитесь, что вы указали одни и те же оси).
Редактировать Основываясь на ваших отзывах и ответах, приведен пример полярного участка пройденного расстояния.
% Speed in m/s
speed = 5;
% Time in seconds
time = 1.5;
% Bearing in degrees
theta = 130;
hax = axes();
% Specify polar line from origin (0,0) to target position (bearing, distance)
hpolar = polar(hax, [0 deg2rad(theta)], [0 speed * time], '-o');
% Ensure the axis looks as you mentioned in your question
view([90 -90]);
Теперь, чтобы обновить этот участок с новым подшипником, скорость, время, вы бы просто позвонить polar
снова с указанием осей.
hpolar = polar(hax, [0 theta], [0 speed], '-o');
Благодарим за помощь Себастьян. Я довольно новичок в Matlab, поэтому не могли бы вы рассказать о том, как вы манипулируете переменными x_start и y_start в заявлениях о перекрестности сюжета? Кроме того, если я меняю угол наклона на 120 градусов, я заметил, что конечная позиция находится в точке (5,20), что означает, что объект движется в противоположном направлении туда, где он должен. Может ли быть способ исправить это? –
@BilalHussain Я изменил свой ответ на определение угла. Выводы перекрестия ничего особенного. Я рисую только две строки. Если вы добавите, например, [-1 1] до значения 10, то Matlab создает вектор из [9 11]. Поэтому x_start + [- 1 1] создает [9 11], а [y_start y_start] создает [20 20]. Важно, чтобы вы имели начальную и конечную позицию в x- и y-направлении в вашей команде plot. – Sebastian
И, пожалуйста, подтвердите, что на вопрос ответили, если на него ответили. – Sebastian