% 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