Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
利用Matlab中的线动画实现棒形动画_Matlab_Animation_Matrix_Euler Angles_Line Plot - Fatal编程技术网

利用Matlab中的线动画实现棒形动画

利用Matlab中的线动画实现棒形动画,matlab,animation,matrix,euler-angles,line-plot,Matlab,Animation,Matrix,Euler Angles,Line Plot,我正在尝试使用Matlab drawnow函数和线绘制为运动文件设置动画。运动文件具有3x3 euler角(偏航-俯仰-滚动)和XYZ坐标值,我计划使用线打印创建一个棒状图形动画,其中每个身体片段都作为棒状图形设置动画 目前我的代码是: %% Import data from text file. %% Perform Calculations on data %% Draw initial figure figure(1) hold on set(gcf,'Renderer','OpenG

我正在尝试使用Matlab drawnow函数和线绘制为运动文件设置动画。运动文件具有3x3 euler角(偏航-俯仰-滚动)和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
%%从文本文件导入数据。
%%对数据执行计算
%%画初始图形
图(1)
等等
集合(gcf、‘渲染器’、‘OpenGL’)
lua=绘图(luaX(1),luaY(1),luaZ(1),0,'o','MarkerSize',10,'MarkerFaceColor','b');
设置(lua、“擦除模式”、“正常”);
rua=绘图(ruaX(1),ruaY(1),ruaZ(1),0,'o','MarkerSize',10,'MarkerFaceColor','r');
设置(rua、“擦除模式”、“正常”);
%%使其余部分充满活力
i=1;
而我
删除(l_lua);
删除(卢拉);
结束
%设置数据并绘制线
集合(lua,'XData',luaX(i));
集合(lua,'YData',luaY(i));
集合(lua,'ZData',luaZ(i));
l_lua=线([-200 luaX(i)],[0 luaY(i)],[0 luaZ(i)],'LineWidth',2,'EraseMode','normal');
集合(rua,'XData',ruaX(i));
集合(rua,'YData',ruaY(i));
集合(rua,'ZData',ruaZ(i));
l_rua=线([200 ruaX(i)],[0 ruaY(i)],[0 ruaZ(i)],'LineWidth',2,'EraseMode','normal');
现在抽;
%画图
网格化
轴([-1000-1000-1000-1000]);
xlabel('X轴');
ylabel(‘Y轴’);
zlabel(‘Z轴’);
i=i+1;
结束
上面的代码仅包括直线的X、Y和Z值,但不包括使用Euler角度的方向

如何将3x3欧拉角添加到正在绘制的直线?我想将坐标和Euler角度值添加到线图中。我是否将Euler角度转换为旋转矩阵并创建4x4矩阵(具有XYZ值)并使用该矩阵进行打印?任何意见都会有帮助

我的目标是创建一个由使用上述方法设置动画的线条表示的木棍图形,但我不介意尝试其他方法。有没有其他更有效的方法来创建和设置木棍图形的动画


感谢所有贡献者。

如果你有一条直线两端的X、Y、Z,你不需要任何角度来绘制它。X、Y、Z和角度值如何定义要绘制的线?(为2D情况绘制草图可能会有所帮助)。我已经知道如何在没有角度的情况下绘制直线,但Euler角度用于直线的方向(即围绕相对坐标旋转)。我只是想知道如何将它们包括在直线图中。例如,我是否将luaX、luaY和luaZ替换为4x4矩阵而不是当前的定标器形式,如果是的话,您能告诉我如何替换吗?我仍然不清楚您的示例-您是否有坐标用于线的起点,然后对其应用旋转?如果是这样,只需将旋转应用于坐标(例如,定义并应用旋转矩阵),然后使用这些新坐标绘制直线。