%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%                            Michael Pokojovy                             % 
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
function main;
    figure(1);

    set(gcf, 'PaperUnits', 'centimeters');
    xSize = 16; ySize = 10;
    xLeft = (21 - xSize)/2; yTop = (30 - ySize)/2;
    set(gcf,'PaperPosition', [xLeft yTop xSize ySize]);
    set(gcf,'Position',[0 0 xSize*50 ySize*50]);

    hold on;

    N = 300;

    t = linspace(0, 2*pi, N);

    x = cos(3*t);
    y = sin(2*t);

    dx = -3*sin(3*t);
    dy =  2*cos(2*t);

    ddx = -9*cos(3*t);
    ddy = -4*sin(2*t);

    K = 6*cos(t).*(8*cos(t).^4 -10*cos(t).^2 + 5)./((232*cos(t).^4 - 97*cos(t).^2 +13 -144*cos(t).^6).^(3/2));
    
    plot(x, y, 'b');
    
    I = [1, 160];
    
    for i = 1:length(I)
        k = I(i);
        x0 = x(k) - 1/(K(k)*sqrt(dx(k)^2 + dy(k)^2))*dy(k);
        y0 = y(k) + 1/(K(k)*sqrt(dx(k)^2 + dy(k)^2))*dx(k);
        plot_circle(x0, y0, 1/abs(K(k)));
        plot(x(k), y(k), 'k*');
    end
    
    axis([-1.2 1.2 -1.4 1.2]);

    xlabel('x');
    ylabel('y');

    t = title(['Lissajous-Kurve mit den Frequenzen 3 bzw. 2 und zwei derer Schmiegekreise'], 'interpreter', 'latex');
    set(t, 'FontSize', 16);
    
    t = legend('Lissajous-Kurve', 'Schmiegekreise');
    set(t, 'interpreter', 'latex');
end

function plot_circle(x0, y0, r)
    M = 100;

    t = linspace(0, 2*pi, M);

    x = r*cos(t) + x0;
    y = r*sin(t) + y0;
    plot(x, y, 'r');
end