Анимация фигурок с использованием линейной анимации в Matlab
Я пытаюсь анимировать файл движения с помощью функции рисования Matlab и построения линий. Файл движения имеет значения эйлеровых углов 3x3 (yaw-pitch-roll) и значения координат XYZ, и я планирую использовать построение линий для создания анимации в виде фигурки, где каждый сегмент тела анимируется в виде фигурки.
В настоящее время мой код:
%% Import data from text file.
%% Perform Calculations on data
%% Draw initial figure
figure(1)
hold on
set(gcf,'Renderer','OpenGL')
lua = plot(luaX(1),luaY(1),luaZ(1),0,'o','MarkerSize',10,'MarkerFaceColor','b');
set(lua,'EraseMode','normal');
rua = plot(ruaX(1),ruaY(1),ruaZ(1),0,'o','MarkerSize',10,'MarkerFaceColor','r');
set(rua,'EraseMode','normal');
%% Animate the rest
i = 1;
while i <= length(time)
% Delete previous line
if i > 1
delete(l_lua);
delete(l_rua);
end
% Set data and draw line
set(lua,'XData',luaX(i));
set(lua,'YData',luaY(i));
set(lua,'ZData',luaZ(i));
l_lua = line([-200 luaX(i)],[0 luaY(i)],[0 luaZ(i)],'LineWidth',2,'EraseMode','normal');
set(rua,'XData',ruaX(i));
set(rua,'YData',ruaY(i));
set(rua,'ZData',ruaZ(i));
l_rua = line([200 ruaX(i)],[0 ruaY(i)],[0 ruaZ(i)],'LineWidth',2,'EraseMode','normal');
drawnow;
% Draw Figure
grid on
axis([-1000 1000 -1000 1000 -1000 1000]);
xlabel('X Axis');
ylabel('Y Axis');
zlabel('Z Axis');
i = i + 1;
end
Приведенный выше код включает только значения X,Y и Z линии, но не ее ориентацию с использованием углов Эйлера.
Как я могу добавить углы Эйлера 3х3 к нарисованной линии? Я хотел бы добавить значения координат и угла Эйлера к линейному графику. Должен ли я преобразовать углы Эйлера в матрицу вращения и создать матрицу 4x4 (со значениями XYZ) и построить график с этим? Любой вклад будет полезен.
Моя цель - создать фигурку, которая будет представлена линиями, анимированными с использованием вышеуказанного подхода, но я не против экспериментировать с другими методами. Существуют ли другие более эффективные способы создания и анимации фигурки?
Спасибо всем, кто внес свой вклад.