2010-02-20 4 views

ответ

1

После поиска и поиска документации, я отвечаю «Нет»: вам придется пойти с одной из сторонних реализаций.

Наилучшим кандидатом были бы семейные функции interp, и они не применяли интерполяцию Безье.

+0

Thx. Как я сказал в другом ответе: я на самом деле спрашиваю об этом, потому что я видел, как мой сын программировал кривую Безье в Matlab, я знаю, что каждая программа рисования реализует это, поэтому мне показалось, что программа, как Matlab, тоже должна иметь это. – Edelcom

3

С подгонка кривой панели инструментов, Matlab поддерживает B-сплайны, которые являются обобщением кривых Безье. Рациональный B-сплайн без внутренних узлов является сплайном Безье.

Например

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

бы построить кривые Безье с контрольными точками в точке (0,0), (1,0), (1,1), (0,1).

0

Следующий код, основанный на этом 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 
Смежные вопросы