Как я могу вращать матрицы сетки me sh вокруг всех осей в MATLAB? - PullRequest
0 голосов
/ 20 апреля 2020

Цель этого кода - построить меня sh, чтобы показать робота с двумя движителями. Положение робота определяется вектором: положение. Ориентация робота определяется вектором переднего блока (фронт робота) и вектором восходящего блока (верх робота). Я создал три эллипсоида, чтобы показать робота без вращения. Как повернуть модель, чтобы она соответствовала определенным векторам ориентации? Как перевести модель в соответствии с координатами позиции?

Код пока:

%inputs to function
forward_vector = [-1 0 0];
upward_vector = [0 0 1];
position = [0 0 0];

%define inital robot shapes
[x1, y1, z1] = ellipsoid(0,0,0,1,0.5,0.5,15);
[x2, y2, z2] = ellipsoid(0.6,0.4,0,0.5,0.25,0.25,15);
[x3, y3, z3] = ellipsoid(0.6,-0.4,0,0.5,0.25,0.25,15);

%rotation?


%plot
surf(x1, y1, z1)
hold on
surf(x2, y2, z2)
surf(x3, y3, z3)
hold off
axis equal

1 Ответ

0 голосов
/ 20 апреля 2020

Вы можете вращать эллипсоиды после их рисования. Краткий пример:

[x1, y1, z1] = ellipsoid(0,0,0,1,0.5,0.5,15);
el1 = surf(x1, y1, z1);
rotate(el1, [0,1,0], 90)

rotate функция может принимать несколько аргументов: углы или вектор и угол. Введите help rotate в команде windows, чтобы получить документы и пример. Вам нужно будет вычислить углы между положением по умолчанию и текущим вектором ориентации.

...