2016-08-23 102 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