function [krivka] = casteljau(polygon,t) 
% Funkce pro výpočet bodů Bézierovy křivky pomocí algoritmu de Casteljau
% VSTUP: polygon - ridici polygon krivky (dvourozmerne pole)
%        t - parametr t (pro rekurzi)
% VYSTUP: krivka - vysledna krivka (dvourozmerne pole)

% inicializace promennych (delka vstupnich poli)
n = length(polygon);
m = length(t);

% pro ukladani vypoctenych bodu
krivka = zeros(m,3);

% pomocna pole pro ulozeni x- a y-ove souradnice
X(:,1) = polygon(:,1);
Y(:,1) = polygon(:,2);
Z(:,1) = polygon(:,3);

% pohyb v poli vysledku
for j = 1:m 
    
    % vypocet
    for i = 2:n 
        X(i:n,i) = (1-t(j))*X(i-1:n-1,i-1) + t(j)*X(i:n,i-1);
        Y(i:n,i) = (1-t(j))*Y(i-1:n-1,i-1) + t(j)*Y(i:n,i-1);
        Z(i:n,i) = (1-t(j))*Z(i-1:n-1,i-1) + t(j)*Z(i:n,i-1);
    end
    
    krivka(j,1) = X(n,n);
    krivka(j,2) = Y(n,n);
    krivka(j,3) = Z(n,n);
    
end 