Domanda

Qual è il modo Matlab per disegnare una curva di Bezier? Avete programmare da soli?

Io non sono alla ricerca di una routine fatta utente, ma chiedo se Matlab offre un modo standard per disegnarli.

È stato utile?

Soluzione

Dopo aver guardato e la ricerca attraverso la documentazione, la mia risposta è no:. Che avrebbe dovuto andare con una delle implementazioni 3rd party

Transito dall'aeroporto candidato sarebbe il funzioni della famiglia interp, e implementare senza interpolazione di Bezier.

Altri suggerimenti

Con il Curve Fitting Toolbox, Matlab supporta B-spline, che sono una generalizzazione di curve di Bézier. A B-spline razionale, senza nodi interni è una spline di Bézier.

Ad esempio

p = spmak([0 0 0 1 1 1],[1 0;0 1]);
fnplt(p)

sarebbe tracciare una curva di Bézier con i punti di controllo (0,0), (1,0), (1,1), (0,1).

Il seguente codice in base a questo link .

function B = bazier( t, P )
    %Bazier curve
    % Parameters
    % ----------
    % - t: double
    %   Time between 0 and 1
    % - C: 2-by-n double matrix
    %   Control points
    %
    % Returns
    % -------
    % - B: 2-by-1 vector
    %   Output point

    B = [0, 0]';

    n = size(P, 2);
    for i = 1:n
        B = B + b(t, i - 1, n - 1) * P(:, i);
    end
end

function value = b(t, i, n)
    value = nchoosek(n, i) * t^i * (1 - t)^(n - i);
end
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top