% 2.Fall verhindert Abbruch beim 1.Schleifendurchlauf
while aktPkt~=Q(1) | length(Q)==1
R=P-ones(n,1)*P(aktPkt,:); %Richtungsvektoren zu allen anderen Punkten
w=atan2(R(:,2),R(:,1)); %Winkel der Richtungsvektoren
w(w<0)=2*pi+w(w<0); %shift [-pi,pi]->[0,2pi]
w=w+(w<=wmin)*2*pi; %Es kann nur mit Winkel > wmin weitergehen
[wmin,hilf]=min(w); %Minimalen Winkel bestimmen
glWi=find(w==wmin); %falls es >1 solche Punkte mit min. Winkel gibt
%diese Punkte finden und den mit dem max. Abstand
%zum letzten Punkt als naechsten nehmen
[buffer,hilf]=max(R(glWi,1).*R(glWi,1)+R(glWi,2).*R(glWi,2));
aktPkt=glWi(hilf);
Q=[Q,aktPkt]; %Punkt in Liste aufnehmen
end;
Q=P(Q(1:length(Q)-1),:); %Umwandlung Indexvektor Q zu Punktmatrix Q