%Zunächst einmal müssen die Punkte eingelesen werden
%M = zeros(8,3);
%for k=1:8    % i und j als Laufvariablen vermeiden, da sie für die komplexen Zahlen codieren
 %   fprintf(['\nBitte Vektor ' num2str(k) ' eingeben:\n'])
  %      for l=1:3
   %         M(k,l)=input(['x' num2str(l) ' = ']);
    %    end
%end

%M bezeichnet die Matrix,in die die Punkte des Bauraums geschrieben werden
%Stand jetzt haben wir hier jedoch nur einen einzigen der Hüllkörper

%K ist die Matrix, in die alle Komponentenpunkte eingepflegt werden
M{1}=[0 0 0;7 0 0;7 7 0;0 7 0;0 0 7;7 0 7;7 7 7;0 7 7]
A{1}=M{1}(1,:);
B{1}=M{1}(2,:);
C{1}=M{1}(3,:);
D{1}=M{1}(4,:);
E{1}=M{1}(5,:);
F{1}=M{1}(6,:);
G{1}=M{1}(7,:);
H{1}=M{1}(8,:);

M{2}=[12 7 7;8 0 0;1 0 0;25 7 0;18 0 7;88 0 7;45 7 7;48 7 7]
A{2}=M{2}(1,:);
B{2}=M{2}(2,:);
C{2}=M{2}(3,:);
D{2}=M{2}(4,:);
E{2}=M{2}(5,:);
F{2}=M{2}(6,:);
G{2}=M{2}(7,:);
H{2}=M{2}(8,:);
K = zeros(8,3);

for k=1:8    % i und j als Laufvariablen vermeiden, da sie für die komplexen Zahlen codieren
    fprintf(['\nBitte Vektor ' num2str(k) ' eingeben:\n'])
        for l=1:3
            K(k,l)=input(['x' num2str(l) ' = ']);
        end
end
%bis hier werden alle Komponentenpunkte eingelesen
sym allepunkte;
sym huellkoerper;

for huellkoerper=1:2
    
M=M{huellkoerper};
for allepunkte=1:8
    
Akomp=K(allepunkte,:);
%Ebenen in z-RIchtung augespannt von ABC und EFG
normalz=cross(A{huellkoerper}-B{huellkoerper},A{huellkoerper}-D{huellkoerper});
syms x y z;
P=[x,y,z];
planefunctionz1=dot(normalz,P-A{huellkoerper});
planefunctionz2=dot(normalz,P-E{huellkoerper});

syms t
linez = Akomp + t*normalz;
intersectionz1= subs(planefunctionz1, P, linez);
intersectionz2= subs(planefunctionz2, P, linez);

tz1 = solve(intersectionz1);
tz2=solve(intersectionz2);

spz1{allepunkte}{huellkoerper} = subs(linez, t, tz1)
spz2{allepunkte}{huellkoerper} = subs(linez,t, tz2)

%Ebenen in y-RIchtung augespannt von ABE und DCG
normaly=cross(A{huellkoerper}-B{huellkoerper},A{huellkoerper}-E{huellkoerper});
syms x y z;
P=[x,y,z];
planefunctiony1=dot(normaly,P-A{huellkoerper});
planefunctiony2=dot(normaly,P-D{huellkoerper});

syms t
liney = Akomp + t*normaly;
intersectiony1= subs(planefunctiony1, P, liney);
intersectiony2= subs(planefunctiony2, P, liney);

ty1 = solve(intersectiony1);
ty2=solve(intersectiony2);

spy1{allepunkte}{huellkoerper} = subs(liney, t, ty1)
spy2{allepunkte}{huellkoerper} = subs(liney,t, ty2)

%Ebenen in x-RIchtung augespannt von ADE und CBF
normalx=cross(A{huellkoerper}-D{huellkoerper},A{huellkoerper}-E{huellkoerper});
syms x y z;
P=[x,y,z];
planefunctionx1=dot(normalx,P-A{huellkoerper});
planefunctionx2=dot(normalx,P-B{huellkoerper});

syms t
linex = Akomp + t*normalx;
intersectionx1= subs(planefunctionx1, P, linex);
intersectionx2= subs(planefunctionx2, P, linex);

tx1 = solve(intersectionx1);
tx2=solve(intersectionx2);

spx1{allepunkte}{huellkoerper} = subs(linex, t, tx1)
spx2{allepunkte}{huellkoerper} = subs(linex,t, tx2)
end
end

%Berechnung aller Abstände der Schnittpunkte zum Komponentenpunkt
for allepunkte=1:8
for huellkoerper=1:2
%Abstände erhalten die Namen s
%DIe folgenden beiden Zeichen welche Richtung und 1 oder 2
%{} in welchem Körper getestet wird, das 2. {}welcher Punkt
sx1{allepunkte}{huellkoerper}=norm(spx1{allepunkte}{huellkoerper}-K(allepunkte,:)); 
sx2{allepunkte}{huellkoerper}=norm(spx2{allepunkte}{huellkoerper}-K(allepunkte,:)); 
sy1{allepunkte}{huellkoerper}=norm(spy1{allepunkte}{huellkoerper}-K(allepunkte,:)); 
sy2{allepunkte}{huellkoerper}=norm(spy2{allepunkte}{huellkoerper}-K(allepunkte,:)); 
sz1{allepunkte}{huellkoerper}=norm(spz1{allepunkte}{huellkoerper}-K(allepunkte,:)); 
sz2{allepunkte}{huellkoerper}=norm(spz2{allepunkte}{huellkoerper}-K(allepunkte,:)); 

sspx{allepunkte}{huellkoerper}=norm(spx1{allepunkte}{huellkoerper}-spx2{allepunkte}{huellkoerper});
sspy{allepunkte}{huellkoerper}=norm(spy1{allepunkte}{huellkoerper}-spy2{allepunkte}{huellkoerper});
sspz{allepunkte}{huellkoerper}=norm(spz1{allepunkte}{huellkoerper}-spz2{allepunkte}{huellkoerper});
end
end

%for allepunkte=1:8
%for huellkoerper=1:2
%if sspx{allepunkte}{huellkoerper}<sx1{allepunkte}{huellkoerper}&sx2{allepunkte}{huellkoerper}&sspy{allepunkte}{huellkoerper}<sy1{allepunkte}{huellkoerper}&sy2{allepunkte}{huellkoerper}&sspz{allepunkte}{huellkoerper}<sz1{allepunkte}{huellkoerper}&sz2{allepunkte}{huellkoerper}
 %    fprintf(['\nPunkt ' num2str(allepunkte) ' liegt in Koerper 'num2str(huellkoerper)' :\n'])
%elseif expression
 %   statements
%else
 %   statements
%end
%end
%end
