% definició d'objectes pir=[0.5 1 0.5 1; 1 0 0 1; 1 0 1 1; 0 0 1 1; 0 0 0 1; 0 1 0 1]'; facepir=[1 2 3; 1 3 4; 1 4 5; 1 5 2; 5 2 3; 3 4 5]; cub=[0 0 0 1; 0 0 1 1; 0 1 0 1; 0 1 1 1; 1 0 0 1; 1 0 1 1; 1 1 0 1; 1 1 1 1]'; facecub=[1 2 4 3;5 6 8 7; 1 2 6 5; 3 4 8 7]; figure patch('Vertices',pir(1:3,:)','Faces',facepir,'FaceColor','none','EdgeColor','k'); axis equal patch('Vertices',cub(1:3,:)','Faces',facecub,'FaceColor','none','EdgeColor','k'); axis equal title('objectes (3D)'); view(3) %planta Mplanta=[1 0 0 0; 0 0 0 0; 0 0 1 0; 0 0 0 1]; pir_proj=Mplanta*pir; figure patch('Vertices',pir_proj([1 3],:)','Faces',facepir,'FaceColor','none','EdgeColor','k'); axis equal title('projecció - planta'); %alçat Malzado=[1 0 0 0; 0 1 0 0; 0 0 0 0; 0 0 0 1]; pir_proj=Malzado*pir; figure patch('Vertices',pir_proj([1 2],:)','Faces',facepir,'FaceColor','none','EdgeColor','k'); axis equal title('projecció - alçat'); %perfil Mperfil=[0 0 0 0; 0 1 0 0; 0 0 1 0; 0 0 0 1]; pir_proj=Mperfil*pir; figure patch('Vertices',pir_proj([3 2],:)','Faces',facepir,'FaceColor','none','EdgeColor','k'); axis equal title('projecció - perfil'); %caballera a=sqrt(2)/2; Mcaballera=[1 0 a 0; 0 1 a 0; 0 0 0 0; 0 0 0 1]; pir_proj=Mcaballera*pir; figure patch('Vertices',pir_proj([1 2],:)','Faces',facepir,'FaceColor','none','EdgeColor','k'); axis equal title('projecció - caballera'); %cabinet a=sqrt(2)/4; Mcabinet=[1 0 a 0; 0 1 a 0; 0 0 0 0; 0 0 0 1]; pir_proj=Mcabinet*pir; figure patch('Vertices',pir_proj([1 2],:)','Faces',facepir,'FaceColor','none','EdgeColor','k'); axis equal title('projecció - cabinet'); %isomètrica r=[1 1 1]; n=-r/norm(r); u=cross(n,[0,1,0]); u=u/norm(u); v=cross(u,n); Mcb=[u -r*u'; v -r*v'; n -r*n'; 0 0 0 1]; pir_proj=Malzado*Mcb*pir; figure patch('Vertices',pir_proj([1 2],:)','Faces',facepir,'FaceColor','none','EdgeColor','k'); axis equal title('projecció - isomètrica'); %dimètrica r=[1 3 1]; n=-r/norm(r); u=cross(n,[0,1,0]); u=u/norm(u); v=cross(u,n); Mcb=[u -r*u'; v -r*v'; n -r*n'; 0 0 0 1]; pir_proj=Malzado*Mcb*pir; figure patch('Vertices',pir_proj([1 2],:)','Faces',facepir,'FaceColor','none','EdgeColor','k'); axis equal title('projecció - dimètrica'); %trimètrica r=[3 2 1]; n=-r/norm(r); u=cross(n,[0,1,0]); u=u/norm(u); v=cross(u,n); Mcb=[u -r*u'; v -r*v'; n -r*n'; 0 0 0 1]; pir_proj=Malzado*Mcb*pir; figure patch('Vertices',pir_proj([1 2],:)','Faces',facepir,'FaceColor','none','EdgeColor','k'); axis equal title('projecció - trimètrica'); %perspectives d=3; Mpers=[1 0 0 0; 0 1 0 0 ; 0 0 1 0; 0 0 1/d 1]; r=[0 0 10]; n=-r/norm(r); u=cross(n,[0,1,0]); u=u/norm(u); v=cross(u,n); Mcb=[u -r*u'; v -r*v'; n -r*n'; 0 0 0 1]; pir_proj=Mpers*Mcb*pir; pir_proj=[pir_proj(1,:)./pir_proj(4,:);pir_proj(2,:)./pir_proj(4,:); pir_proj(3,:)./pir_proj(4,:); pir_proj(4,:)./pir_proj(4,:)]; cub_proj=Mpers*Mcb*cub; cub_proj=cub_proj./([1 1 1 1]'*cub_proj(4,:)); %altra manera de normalitzar l'homegènea figure patch('Vertices',pir_proj([1 2],:)','Faces',facepir,'FaceColor','none','EdgeColor','k'); axis equal patch('Vertices',cub_proj([1 2],:)','Faces',facecub,'FaceColor','none','EdgeColor','k'); axis equal title('projecció - perspectiva des de 0,0,10'); r=[10 0 10]; n=-r/norm(r); u=cross(n,[0,1,0]); u=u/norm(u); v=cross(u,n); Mcb=[u -r*u'; v -r*v'; n -r*n'; 0 0 0 1]; pir_proj=Mpers*Mcb*pir; pir_proj=[pir_proj(1,:)./pir_proj(4,:);pir_proj(2,:)./pir_proj(4,:); pir_proj(3,:)./pir_proj(4,:); pir_proj(4,:)./pir_proj(4,:)]; cub_proj=Mpers*Mcb*cub; cub_proj=cub_proj./([1 1 1 1]'*cub_proj(4,:)); %atra forma de normalitzar l'homegènea figure patch('Vertices',pir_proj([1 2],:)','Faces',facepir,'FaceColor','none','EdgeColor','k'); axis equal patch('Vertices',cub_proj([1 2],:)','Faces',facecub,'FaceColor','none','EdgeColor','k'); axis equal title('projecció - perspectiva des de 10,0,10'); r=[10 10 10]; n=-r/norm(r); u=cross(n,[0,1,0]); u=u/norm(u); v=cross(u,n); Mcb=[u -r*u'; v -r*v'; n -r*n'; 0 0 0 1]; pir_proj=Mpers*Mcb*pir; pir_proj=[pir_proj(1,:)./pir_proj(4,:);pir_proj(2,:)./pir_proj(4,:); pir_proj(3,:)./pir_proj(4,:); pir_proj(4,:)./pir_proj(4,:)]; cub_proj=Mpers*Mcb*cub; cub_proj=cub_proj./([1 1 1 1]'*cub_proj(4,:)); %atra forma de normalitzar l'homegènea figure patch('Vertices',pir_proj([1 2],:)','Faces',facepir,'FaceColor','none','EdgeColor','k'); axis equal patch('Vertices',cub_proj([1 2],:)','Faces',facecub,'FaceColor','none','EdgeColor','k'); axis equal title('projecció - perspectiva des de 10,10,10');