function koch(L,R,level);
% Rekursiv erzeugte Koch'sche Kurve
%input: L,R kartesische Koordinaten des linken bzw. rechten Endpunktes der
%           Geraden
%      level Anzahl der Rekursionsschritte
%

L=L(:); R=R(:);

if level == 0
    plot([L(1),R(1)],[L(2),R(2)])
    hold on
else
    M1 = (2*L+R)/3;
    M2 = (L + 2*R)/3;
    rot = [.5, -.5*sqrt(3);.5*sqrt(3), .5];
    top = M1 + rot*(R-L)/3;
    koch(L,M1,level-1)
    koch(M1,top,level-1)
%    koch(M2,top,level-1)    % erzeugt asymmetrische Kurve
    koch(top,M2,level-1)
    koch(M2,R,level-1)
end
return
