%% Objectos para representar sistemas de coordenadas
%% de forma não ambígua. Possibilidade de usar um 
%% objecto único para os 3 eixos.  V. Santos, Oct 2007.
%%


%% Definição parcial de cada sub-objecto (eixo)
Xpart = [
 0  0.05   0.5   0.4  0.5  0.6   0.7  0.8  0.7   1     1    1.5 1   1     0.7  0.8  0.7  0.6  0.5  0.4  0.5  0.05
 0 -0.05  -0.05 -0.2 -0.2 -0.05 -0.2 -0.2 -0.05 -0.05 -0.2  0   0.2 0.05  0.05 0.2  0.2  0.05 0.2  0.2  0.05 0.05
 0  0      0     0    0    0     0     0   0     0      0   0   0   0     0      0    0    0   0    0    0    0
 ];

Ypart = [
0 0.05 0.05 0.2 0.2 0.05 0.05 0.2 0   -0.2 -0.05 -0.05 -0.2 -0.2 -0.05 -0.05
0 0.05 0.6  0.7 0.8 0.7  1    1   1.5 1     1     0.7   0.8  0.7  0.6   0.05
0 0    0    0   0   0    0    0   0   0     0     0     0    0    0     0 
 ];

Zpart = [
     0   0     0      0     0    0    0     0     0     0   0   0   0    0    0   0    0    0    0     0    0
     0  -0.05 -0.05  -0.2  -0.2 -0.1 -0.1  -0.05 -0.05 -0.2 0   0.2 0.05 0.05 0.2 0.2  0.1  0.1  0.05  0.05 0.05
     0   0.05  0.55   0.45  0.8  0.8  0.62  0.66  1     1   1.5 1   1    0.7  0.8 0.45 0.45 0.62 0.58  0.5  0.05
]; 
 
%% Concatenação dos três objectos num só.
X = [ Xpart(1,:) Ypart(1,:) Zpart(1,:) ];
Y = [ Xpart(2,:) Ypart(2,:) Zpart(2,:) ];
Z = [ Xpart(3,:) Ypart(3,:) Zpart(3,:) ];


%% Ilustração do desenho do objecto
close all
h=fill3(X,Y,Z, 'b');
xlabel('X'); ylabel('Y'); zlabel('Z');
grid on; hold on
%axis equal;

%% Uma pequena transformação: :-)

P = [X;Y;Z; ones(1,size(X,2))];
T=[ 0 1 0 2; -1 0 0 3; 0 0 1 2; 0 0 0 1] ;
P2 = T * P;
h2=fill3(P2(1,:),P2(2,:),P2(3,:), 'g');

line( [ 0 T(1,4)]', [0 T(2,4)]', [0 T(3,4)]);




