2016-08-23 127 views
0

我讀了一些相關的討論:如何在動畫中的移動圓圈後添加標籤?

How to add dynamic data labels inside of .avi animation?

Text Animation with MATLAB

這些例子是很多困難比我,所以我不是很瞭解如何解決我的問題。


我做了下面的動畫,我只是想

  1. 添加標籤 「{E}」 下的 「中心藍點」
  2. 添加標籤 「{P}」 近旋轉「中心藍色點」和「中間藍色圓圈」內的「小藍色圓圈」。
  3. 在「小紅*」附近添加旋轉「大藍圈」的標籤「{S}」。

當然,標籤{P}和{S}應緊跟每個相應的對象。

我該怎麼做? ...

clear all; 
close all; 
clc 


%% time specifications 
stoptime = 8; 
fs = 50; 
dt = 1/fs; 
t = (0:dt:stoptime)'; 

N = size(t,1); 
%% 
vx(:,1) = 0;vy(:,1) = 15;vz(:,1) = 0; 
ux(:,1) = 0 ;uy(:,1) = 3 ;uz(:,1) = 0; 

%% angular velocity 
Ix = 3,5; 
Iz = 1; 
w = .1; % w_L 
wp = ((Ix-Iz)/Iz)*w*(2)^.5 


%% 
for k = 2:N 

vx(:,k) = cos(w*(k-1))*vx(:,1) - sin(w*(k-1))*vy(:,1) + 0*vz(:,1); 
vy(:,k) = sin(w*(k-1))*vx(:,1) + cos(w*(k-1))*vy(:,1) + 0*vz(:,1); 
vz(:,k) = 0*vx(:,k-1) + 0*vy(:,k-1) + 1*vz(:,k-1); 

ux(:,k) = cos((w+wp)*(k-1))*ux(:,1) - sin((w+wp)*(k-1))*uy(:,1) + 0*uz(:,1) + vx(:,k); 
uy(:,k) = sin((w+wp)*(k-1))*ux(:,1) + cos((w+wp)*(k-1))*uy(:,1) + 0*uz(:,1) + vy(:,k); 
uz(:,k) = 0*ux(:,1) + 0*uy(:,1) + 1*uz(:,1) + vz(:,k);  




o = [0;0]; 
xline = [vx(:,k);o(1,1)]; 
yline = [vy(:,k);o(2,1)]; 
xline1 = [vx(:,k);ux(:,k)]; 
yline1 = [vy(:,k);uy(:,k)]; 

figure(1) 
ang=0:0.01:2*pi; 
xp=15*cos(ang); 
yp=15*sin(ang); 
xp1=3*cos(ang)+vx(:,k); 
yp1=3*sin(ang)+vy(:,k); 

plot(xp,yp,'c--'); hold on 
plot(xp1,yp1); hold on 
plot(0,0,'.'); hold on 
plot(xline,yline); hold on 
plot(xline1,yline1); hold on 
plot(vx(:,k),vy(:,k),'bo'); 
plot(ux(:,k),uy(:,k),'r*'); hold on 
axis([-25 25 -25 25]); 
axis equal 
axis manual 
pause(.1); 
hold off 
end 

enter image description here

對不起,我不知道上傳我的動畫視頻。這只是它的圖片。

回答

1

您可以使用text函數執行此操作。

tOff = [1,1]; %%% (text offset) 
plot(xp,yp,'c--'); hold on 
plot(xp1,yp1); 
plot(0,0,'.'); 
text (tOff, tOff, sprintf('(%d,%d)', 0, 0)); %%% 
plot(xline,yline); 
plot(xline1,yline1); 
plot(vx(:,k),vy(:,k),'bo'); 
text (vx(:,k)+tOff,vy(:,k)+tOff, sprintf('(%1.3d,%1.3d)', vx(:,k),vy(:,k))); %%% 
plot(ux(:,k),uy(:,k),'r*'); 
text (ux(:,k)+tOff,uy(:,k)+tOff, sprintf('(%1.3d,%1.3d)', vx(:,k),vy(:,k))); %%% 
axis([-25 25 -25 25]); 
axis equal 
axis manual 
pause(.1); 
hold off 

這是相同的代碼作爲你的上面,除了與一些添加,標有%%%。 另請注意,hold on只需要指定一次,並將適用至hold off發生(或數字被銷燬)。 (我刪除了上面代碼中多餘的hold on說明)。

enter image description here