Matlab にいくつかの 3D ポイントがあり、plot3 を使用してこれらのポイントからアニメーションを作成しました。ポイントは配列に格納され、その一部が線で結合されます。コードは次のとおりです。
tstart = 0.0;
tend = 5;
tsim = tend - tstart;
dt = 0.001;
Dn = tsim/dt + 1;
t0 = 5.0/dt;
f = 0.4;
for(i=1:Dn)
t(i) = tstart + (i-1)*dt;
rf_P0(i) = sin(2*pi*f*t(i));
rf_P1(i) = cos(2*pi*f*t(i));
end
figure(1);
set(gcf,'Renderer','OpenGL');
RF_P0 = plot3(rf_P0(1,1),rf_P0(1,2),rf_P0(1,3),'o','MarkerSize',10,'MarkerFaceColor','r'); % point 1
hold on;
RF_P1 = plot3(rf_P1(1,1),rf_P1(1,2),rf_P1(1,3),'o','MarkerSize',10,'MarkerFaceColor','r'); % point 2
RF_D0 = plot3([rf_P0(1,1) rf_P1(1,1)], [rf_P0(1,2) rf_P1(1,2)], [rf_P0(1,3) rf_P1(1,3)],'LineWidth',4,'Color','k'); %line from point 1 to 2
i = 1;
while i<=size(rf_P0,1)
set(RF_P0,'XData',rf_P0(i,1),'YData',rf_P0(i,2),'ZData',rf_P0(i,3));
set(RF_P1,'XData',rf_P1(i,1),'YData',rf_P1(i,2),'ZData',rf_P1(i,3));
set(RF_D0,'XData',[rf_P0(i,1) rf_P1(i,1)],'YData',[rf_P0(i,2) rf_P1(i,2)],'ZData',[rf_P0(i,3) rf_P1(i,3)]);
drawnow;
i=i+1;
end
これで問題なく動作します。これにより、2 つの点とそれらの間の線の動きがアニメーション化されます。ポイントとラインの両方が消去され、反復ごとに再描画されます。今私がやりたいことは、他のすべての点と線を通常どおり削除して再描画する必要がある間に、点の 1 つの動きの履歴を表示したいということです。ポイント 1 のプロットを、その動きの軌跡を示すアニメーション全体で「保持」したいとしましょう。
前もって感謝します。