Gráfica 3D
Publicado por Marina (19 intervenciones) el 28/07/2014 09:34:50
Hola a todos,
Estoy realizando un proyecto con programación en matlab y una de sus partes es la de mostrar el movimiento de una persona (pecho y espalda) durante la respiración. Tengo el programa implementado y he comprobado que los puntos sí tienen un movimiento, pero a la hora de ordenar que muestre ese movimiento, no se mueve.
Este es el script:
for Im=1:NumPuntos;
clear ptoEn;
%TrayectoriaX1(Im,:)=squeeze(SetP2(:,1,Im));
%TrayectoriaY1(Im,:)=squeeze(SetP2(:,5,Im));
%TrayectoriaZ1(Im,:)=squeeze(SetP2(:,9,Im));
%TrayectoriaX2(Im,:)=squeeze(SetP1(:,1,Im));
%TrayectoriaY2(Im,:)=squeeze(SetP1(:,5,Im));
%TrayectoriaZ2(Im,:)=squeeze(SetP1(:,9,Im));
%TrayectoriaZ1(Im,:)=squeeze(SetP2(:,7,Im));
%TrayectoriaY1(Im,:)=squeeze(SetP2(:,11,Im));
%TrayectoriaX2(Im,:)=squeeze(SetP1(:,3,Im));
%TrayectoriaZ2(Im,:)=squeeze(SetP1(:,7,Im));
%TrayectoriaY2(Im,:)=squeeze(SetP1(:,11,Im));
TrayectoriaX1(Im,:)=squeeze(SetP2(:,2,Im));
TrayectoriaY1(Im,:)=squeeze(SetP2(:,6,Im));
TrayectoriaZ1(Im,:)=squeeze(SetP2(:,10,Im));
TrayectoriaX2(Im,:)=squeeze(SetP1(:,2,Im));
TrayectoriaY2(Im,:)=squeeze(SetP1(:,6,Im));
TrayectoriaZ2(Im,:)=squeeze(SetP1(:,10,Im));
%TrayectoriaX1(Im,:)=squeeze(SetP2(:,4,Im));
%TrayectoriaY1(Im,:)=squeeze(SetP2(:,8,Im));
%TrayectoriaZ1(Im,:)=squeeze(SetP2(:,12,Im));
%TrayectoriaX2(Im,:)=squeeze(SetP1(:,4,Im));
%TrayectoriaY2(Im,:)=squeeze(SetP1(:,8,Im));
%TrayectoriaZ2(Im,:)=squeeze(SetP1(:,12,Im));
end
for i=1:6
for j=1:4
indice=(i-1)*4+j;
%indice=(j-1)*6+i;
X(i,j,:)=TrayectoriaX1(indice,:);
Z(i,j,:)=TrayectoriaY1(indice,:);
Y(i,j,:)=TrayectoriaZ1(indice,:);
X2(i,j,:)=TrayectoriaX2(indice,:);
Z2(i,j,:)=TrayectoriaY2(indice,:);
Y2(i,j,:)=TrayectoriaZ2(indice,:);
end
end
[Yin,IM]=max(Z,[],4);
[Yin,Im]=min(Z,[],4);
[Yin2,IM2]=max(Z2,[],4);
[Yin2,Im2]=min(Z2,[],4);
for i=1:6
for j=1:4
XM(i,j)=X(i,j,IM(i,j));
YM(i,j)=Y(i,j,IM(i,j));
ZM(i,j)=Z(i,j,IM(i,j));
Xm(i,j)=X(i,j,Im(i,j));
Ym(i,j)=Y(i,j,Im(i,j));
Zm(i,j)=Z(i,j,Im(i,j));
XM2=XM;
YM2=YM;
ZM2=ZM;
Xm2=Xm;
Ym2=Ym;
Zm2=Zm;
XM2(i,j)=X2(i,j,IM2(i,j));
YM2(i,j)=Y2(i,j,IM2(i,j));
ZM2(i,j)=Z2(i,j,IM2(i,j));
Xm2(i,j)=X2(i,j,Im2(i,j));
Ym2(i,j)=Y2(i,j,Im2(i,j));
Zm2(i,j)=Z2(i,j,Im2(i,j));
end
end
f=figure();
set(f, 'Position', [100 200 1600 600])
set(gcf,'PaperUnits','inches','PaperPosition',[0 0 16 6])
set(gcf, 'Color','white')
set(gca, 'nextplot','replacechildren', 'Visible','on');
camproj('perspective')
REFX=X(:);
REFY=Y(:);
REFZ=Z(:);
REFX2=X2(:);
REFY2=Y2(:);
REFZ2=Z2(:);
%nFrames = 2000;
% Ejes=[50 200 -300 0 200 260];
Ejes=[100 350 -100 250 170 470];
% Ejes2=[200 400 0 300 240 330];
for i=1:result
t=i/result;
subplot(231)
nombre=strcat(newDir,'/CapturaMov_C1_',num2str(i,'%04d'),'.png');
imagen=imread(nombre);
imagen=imrotate(imagen,270);
image(imagen);
hold on
plot(squeeze(C2(i,1,:))+(size(imagen,2)/2),-squeeze(C2(i,2,:))+(size(imagen,1)/2),'or','MarkerSize',15);
subplot(234)
nombre2=strcat(newDir,'/CapturaMov_C4_',num2str(i,'%04d'),'.png');
imagen2=imread(nombre2);
imagen2=imrotate(imagen2,270);
image(imagen2);
hold on
plot(squeeze(C1(i,1,:))+(size(imagen2,2)/2),-squeeze(C1(i,2,:))+(size(imagen2,1)/2),'or','MarkerSize',15);
subplot(2,3,[2 3 5 6])
camproj('perspective')
pbaspect([1 1 1]);
RADIO=1000;
campos([RADIO*cos(pi*sin(t*2*pi)/2-pi/4)+(Ejes(1)+Ejes(2))/2,+(Ejes(3)+Ejes(4))/2+RADIO*sin(pi*sin(t*2*pi)/2-pi/4),200]);
camva(40);
axis(Ejes)
cla(gca)
set(gca,'DataAspectRatio',[1 1 1])
hold on
box on
plot3(interp1(1:6,Xm,1:0.1:6,'cubic'),interp1(1:6,Ym,1:0.1:6,'cubic'),interp1(1:6,Zm,1:0.1:6,'cubic'),'--','Color',[0.2 0.5 0.2])
plot3(interp1(1:4,Xm',1:0.1:4,'cubic'),interp1(1:4,Ym',1:0.1:4,'cubic'),interp1(1:4,Zm',1:0.1:4,'cubic'),'--','Color',[0.2 0.5 0.2])
surf(X(:,:,i),Y(:,:,i),Z(:,:,i),'FaceColor',[.8 .6 .4],'FaceLighting','phong','EdgeColor','none')
plot3(interp1(1:6,X(:,:,i),1:0.1:6,'cubic'),interp1(1:6,Y(:,:,i),1:0.1:6,'cubic'),interp1(1:6,Z(:,:,i),1:0.1:6,'cubic'),'Color',[.3 .2 .1])
plot3(interp1(1:4,X(:,:,i)',1:0.1:4,'cubic'),interp1(1:4,Y(:,:,i)',1:0.1:4,'cubic'),interp1(1:4,Z(:,:,i)',1:0.1:4,'cubic'),'Color',[.3 .2 .1])
plot3(X(:,:,i),Y(:,:,i),Z(:,:,i),'.','MarkerSize',30,'Color',[.3 .2 .1])
camlight left
alpha .7
%plot3(interp1(1:6,XM,1:0.1:6,'cubic'),interp1(1:6,YM,1:0.1:6,'cubic'),interp1(1:6,ZM,1:0.1:6,'cubic'),'--','Color',[0.2 0.6 0.2])
%plot3(interp1(1:4,XM',1:0.1:4,'cubic'),interp1(1:4,YM',1:0.1:4,'cubic'),interp1(1:4,ZM',1:0.1:4,'cubic'),'--','Color',[0.2 0.6 0.2])
%LIMITE=length(REFX);
%plot3(REFX(:),REFY(:),REFZ(:),'.','MarkerSize',1,'Color',[0.2 0.6 0.2])
set(gcf,'PaperPositionMode','auto')
%%print('-dpng','-r72',['Salida_C4_' num2str(i,'%04d') '.png']);
% subplot(224)
% camproj('perspective')
% pbaspect([1 1 1]);
% RADIO=300;
% campos([RADIO*cos(pi*sin(t*2*pi)/2-pi/4)+(Ejes2(1)+Ejes2(2))/2,+(Ejes2(3)+Ejes2(4))/2+RADIO*sin(pi*sin(t*2*pi)/2-pi/4),300]);
% camva(40);
% axis(Ejes2)
% cla(gca)
% set(gca,'DataAspectRatio',[1 1 .5])
% hold on
% box on
hold on
% plot3(interp1(1:6,Xm2,1:0.1:6,'cubic'),interp1(1:6,Ym2,1:0.1:6,'cubic'),interp1(1:6,Zm2,1:0.1:6,'cubic'),'--','Color',[0.2 0.5 0.2])
%plot3(interp1(1:4,Xm2',1:0.1:4,'cubic'),interp1(1:4,Ym2',1:0.1:4,'cubic'),interp1(1:4,Zm2',1:0.1:4,'cubic'),'--','Color',[0.2 0.5 0.2])
surf(X2(:,:,i),Y2(:,:,i),Z2(:,:,i),'FaceColor',[.8 .6 .4],'FaceLighting','phong','EdgeColor','none')
plot3(interp1(1:6,X2(:,:,i),1:0.1:6,'cubic'),interp1(1:6,Y2(:,:,i),1:0.1:6,'cubic'),interp1(1:6,Z2(:,:,i),1:0.1:6,'cubic'),'Color',[.3 .2 .1])
plot3(interp1(1:4,X2(:,:,i)',1:0.1:4,'cubic'),interp1(1:4,Y2(:,:,i)',1:0.1:4,'cubic'),interp1(1:4,Z2(:,:,i)',1:0.1:4,'cubic'),'Color',[.3 .2 .1])
plot3(X2(:,:,i),Y2(:,:,i),Z2(:,:,i),'.','MarkerSize',30,'Color',[.3 .2 .1])
camlight left
alpha .7
%plot3(interp1(1:6,XM2,1:0.1:6,'cubic'),interp1(1:6,YM2,1:0.1:6,'cubic'),interp1(1:6,ZM2,1:0.1:6,'cubic'),'--','Color',[0.2 0.6 0.2])
%plot3(interp1(1:4,XM2',1:0.1:4,'cubic'),interp1(1:4,YM2',1:0.1:4,'cubic'),interp1(1:4,ZM2',1:0.1:4,'cubic'),'--','Color',[0.2 0.6 0.2])
%LIMITE2=length(REFX2);
%plot3(REFX2(:),REFY2(:),REFZ2(:),'.','MarkerSize',1,'Color',[0.2 0.6 0.2])
hold off
set(gcf,'PaperPositionMode','auto')
print('-dpng','-r72',['Salida_C1_' num2str(i,'%04d') '.png']);
i
clf
end
os lo agradecería muchísimo si me pudierais echar una mano y decirme si veis dónde está el fallo.
Un saludo,
Marina
Estoy realizando un proyecto con programación en matlab y una de sus partes es la de mostrar el movimiento de una persona (pecho y espalda) durante la respiración. Tengo el programa implementado y he comprobado que los puntos sí tienen un movimiento, pero a la hora de ordenar que muestre ese movimiento, no se mueve.
Este es el script:
for Im=1:NumPuntos;
clear ptoEn;
%TrayectoriaX1(Im,:)=squeeze(SetP2(:,1,Im));
%TrayectoriaY1(Im,:)=squeeze(SetP2(:,5,Im));
%TrayectoriaZ1(Im,:)=squeeze(SetP2(:,9,Im));
%TrayectoriaX2(Im,:)=squeeze(SetP1(:,1,Im));
%TrayectoriaY2(Im,:)=squeeze(SetP1(:,5,Im));
%TrayectoriaZ2(Im,:)=squeeze(SetP1(:,9,Im));
%TrayectoriaZ1(Im,:)=squeeze(SetP2(:,7,Im));
%TrayectoriaY1(Im,:)=squeeze(SetP2(:,11,Im));
%TrayectoriaX2(Im,:)=squeeze(SetP1(:,3,Im));
%TrayectoriaZ2(Im,:)=squeeze(SetP1(:,7,Im));
%TrayectoriaY2(Im,:)=squeeze(SetP1(:,11,Im));
TrayectoriaX1(Im,:)=squeeze(SetP2(:,2,Im));
TrayectoriaY1(Im,:)=squeeze(SetP2(:,6,Im));
TrayectoriaZ1(Im,:)=squeeze(SetP2(:,10,Im));
TrayectoriaX2(Im,:)=squeeze(SetP1(:,2,Im));
TrayectoriaY2(Im,:)=squeeze(SetP1(:,6,Im));
TrayectoriaZ2(Im,:)=squeeze(SetP1(:,10,Im));
%TrayectoriaX1(Im,:)=squeeze(SetP2(:,4,Im));
%TrayectoriaY1(Im,:)=squeeze(SetP2(:,8,Im));
%TrayectoriaZ1(Im,:)=squeeze(SetP2(:,12,Im));
%TrayectoriaX2(Im,:)=squeeze(SetP1(:,4,Im));
%TrayectoriaY2(Im,:)=squeeze(SetP1(:,8,Im));
%TrayectoriaZ2(Im,:)=squeeze(SetP1(:,12,Im));
end
for i=1:6
for j=1:4
indice=(i-1)*4+j;
%indice=(j-1)*6+i;
X(i,j,:)=TrayectoriaX1(indice,:);
Z(i,j,:)=TrayectoriaY1(indice,:);
Y(i,j,:)=TrayectoriaZ1(indice,:);
X2(i,j,:)=TrayectoriaX2(indice,:);
Z2(i,j,:)=TrayectoriaY2(indice,:);
Y2(i,j,:)=TrayectoriaZ2(indice,:);
end
end
[Yin,IM]=max(Z,[],4);
[Yin,Im]=min(Z,[],4);
[Yin2,IM2]=max(Z2,[],4);
[Yin2,Im2]=min(Z2,[],4);
for i=1:6
for j=1:4
XM(i,j)=X(i,j,IM(i,j));
YM(i,j)=Y(i,j,IM(i,j));
ZM(i,j)=Z(i,j,IM(i,j));
Xm(i,j)=X(i,j,Im(i,j));
Ym(i,j)=Y(i,j,Im(i,j));
Zm(i,j)=Z(i,j,Im(i,j));
XM2=XM;
YM2=YM;
ZM2=ZM;
Xm2=Xm;
Ym2=Ym;
Zm2=Zm;
XM2(i,j)=X2(i,j,IM2(i,j));
YM2(i,j)=Y2(i,j,IM2(i,j));
ZM2(i,j)=Z2(i,j,IM2(i,j));
Xm2(i,j)=X2(i,j,Im2(i,j));
Ym2(i,j)=Y2(i,j,Im2(i,j));
Zm2(i,j)=Z2(i,j,Im2(i,j));
end
end
f=figure();
set(f, 'Position', [100 200 1600 600])
set(gcf,'PaperUnits','inches','PaperPosition',[0 0 16 6])
set(gcf, 'Color','white')
set(gca, 'nextplot','replacechildren', 'Visible','on');
camproj('perspective')
REFX=X(:);
REFY=Y(:);
REFZ=Z(:);
REFX2=X2(:);
REFY2=Y2(:);
REFZ2=Z2(:);
%nFrames = 2000;
% Ejes=[50 200 -300 0 200 260];
Ejes=[100 350 -100 250 170 470];
% Ejes2=[200 400 0 300 240 330];
for i=1:result
t=i/result;
subplot(231)
nombre=strcat(newDir,'/CapturaMov_C1_',num2str(i,'%04d'),'.png');
imagen=imread(nombre);
imagen=imrotate(imagen,270);
image(imagen);
hold on
plot(squeeze(C2(i,1,:))+(size(imagen,2)/2),-squeeze(C2(i,2,:))+(size(imagen,1)/2),'or','MarkerSize',15);
subplot(234)
nombre2=strcat(newDir,'/CapturaMov_C4_',num2str(i,'%04d'),'.png');
imagen2=imread(nombre2);
imagen2=imrotate(imagen2,270);
image(imagen2);
hold on
plot(squeeze(C1(i,1,:))+(size(imagen2,2)/2),-squeeze(C1(i,2,:))+(size(imagen2,1)/2),'or','MarkerSize',15);
subplot(2,3,[2 3 5 6])
camproj('perspective')
pbaspect([1 1 1]);
RADIO=1000;
campos([RADIO*cos(pi*sin(t*2*pi)/2-pi/4)+(Ejes(1)+Ejes(2))/2,+(Ejes(3)+Ejes(4))/2+RADIO*sin(pi*sin(t*2*pi)/2-pi/4),200]);
camva(40);
axis(Ejes)
cla(gca)
set(gca,'DataAspectRatio',[1 1 1])
hold on
box on
plot3(interp1(1:6,Xm,1:0.1:6,'cubic'),interp1(1:6,Ym,1:0.1:6,'cubic'),interp1(1:6,Zm,1:0.1:6,'cubic'),'--','Color',[0.2 0.5 0.2])
plot3(interp1(1:4,Xm',1:0.1:4,'cubic'),interp1(1:4,Ym',1:0.1:4,'cubic'),interp1(1:4,Zm',1:0.1:4,'cubic'),'--','Color',[0.2 0.5 0.2])
surf(X(:,:,i),Y(:,:,i),Z(:,:,i),'FaceColor',[.8 .6 .4],'FaceLighting','phong','EdgeColor','none')
plot3(interp1(1:6,X(:,:,i),1:0.1:6,'cubic'),interp1(1:6,Y(:,:,i),1:0.1:6,'cubic'),interp1(1:6,Z(:,:,i),1:0.1:6,'cubic'),'Color',[.3 .2 .1])
plot3(interp1(1:4,X(:,:,i)',1:0.1:4,'cubic'),interp1(1:4,Y(:,:,i)',1:0.1:4,'cubic'),interp1(1:4,Z(:,:,i)',1:0.1:4,'cubic'),'Color',[.3 .2 .1])
plot3(X(:,:,i),Y(:,:,i),Z(:,:,i),'.','MarkerSize',30,'Color',[.3 .2 .1])
camlight left
alpha .7
%plot3(interp1(1:6,XM,1:0.1:6,'cubic'),interp1(1:6,YM,1:0.1:6,'cubic'),interp1(1:6,ZM,1:0.1:6,'cubic'),'--','Color',[0.2 0.6 0.2])
%plot3(interp1(1:4,XM',1:0.1:4,'cubic'),interp1(1:4,YM',1:0.1:4,'cubic'),interp1(1:4,ZM',1:0.1:4,'cubic'),'--','Color',[0.2 0.6 0.2])
%LIMITE=length(REFX);
%plot3(REFX(:),REFY(:),REFZ(:),'.','MarkerSize',1,'Color',[0.2 0.6 0.2])
set(gcf,'PaperPositionMode','auto')
%%print('-dpng','-r72',['Salida_C4_' num2str(i,'%04d') '.png']);
% subplot(224)
% camproj('perspective')
% pbaspect([1 1 1]);
% RADIO=300;
% campos([RADIO*cos(pi*sin(t*2*pi)/2-pi/4)+(Ejes2(1)+Ejes2(2))/2,+(Ejes2(3)+Ejes2(4))/2+RADIO*sin(pi*sin(t*2*pi)/2-pi/4),300]);
% camva(40);
% axis(Ejes2)
% cla(gca)
% set(gca,'DataAspectRatio',[1 1 .5])
% hold on
% box on
hold on
% plot3(interp1(1:6,Xm2,1:0.1:6,'cubic'),interp1(1:6,Ym2,1:0.1:6,'cubic'),interp1(1:6,Zm2,1:0.1:6,'cubic'),'--','Color',[0.2 0.5 0.2])
%plot3(interp1(1:4,Xm2',1:0.1:4,'cubic'),interp1(1:4,Ym2',1:0.1:4,'cubic'),interp1(1:4,Zm2',1:0.1:4,'cubic'),'--','Color',[0.2 0.5 0.2])
surf(X2(:,:,i),Y2(:,:,i),Z2(:,:,i),'FaceColor',[.8 .6 .4],'FaceLighting','phong','EdgeColor','none')
plot3(interp1(1:6,X2(:,:,i),1:0.1:6,'cubic'),interp1(1:6,Y2(:,:,i),1:0.1:6,'cubic'),interp1(1:6,Z2(:,:,i),1:0.1:6,'cubic'),'Color',[.3 .2 .1])
plot3(interp1(1:4,X2(:,:,i)',1:0.1:4,'cubic'),interp1(1:4,Y2(:,:,i)',1:0.1:4,'cubic'),interp1(1:4,Z2(:,:,i)',1:0.1:4,'cubic'),'Color',[.3 .2 .1])
plot3(X2(:,:,i),Y2(:,:,i),Z2(:,:,i),'.','MarkerSize',30,'Color',[.3 .2 .1])
camlight left
alpha .7
%plot3(interp1(1:6,XM2,1:0.1:6,'cubic'),interp1(1:6,YM2,1:0.1:6,'cubic'),interp1(1:6,ZM2,1:0.1:6,'cubic'),'--','Color',[0.2 0.6 0.2])
%plot3(interp1(1:4,XM2',1:0.1:4,'cubic'),interp1(1:4,YM2',1:0.1:4,'cubic'),interp1(1:4,ZM2',1:0.1:4,'cubic'),'--','Color',[0.2 0.6 0.2])
%LIMITE2=length(REFX2);
%plot3(REFX2(:),REFY2(:),REFZ2(:),'.','MarkerSize',1,'Color',[0.2 0.6 0.2])
hold off
set(gcf,'PaperPositionMode','auto')
print('-dpng','-r72',['Salida_C1_' num2str(i,'%04d') '.png']);
i
clf
end
os lo agradecería muchísimo si me pudierais echar una mano y decirme si veis dónde está el fallo.
Un saludo,
Marina
Valora esta pregunta
0