Как вы можете нарисовать кривую Безье в Matlab

Какой способ Matlab нарисовать кривую Безье? Вы должны prgoram его самостоятельно?

Я не ищу рутину, созданную пользователем, но спрашиваю, предлагает ли Matlab стандартный способ их рисования.


person Edelcom    schedule 20.02.2010    source источник


Ответы (4)


После просмотра и поиска в документации мой ответ - нет: вам придется использовать одну из сторонних реализаций.

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

person mvaz    schedule 20.02.2010
comment
Спасибо. Как я сказал в другом ответе: я на самом деле спрашиваю об этом, потому что я видел, как мой сын сам программировал кривую Безье в Matlab, я знаю, что каждая программа для рисования реализует это, поэтому мне показалось, что такая программа, как Matlab, тоже должна иметь это. - person Edelcom; 20.02.2010

С помощью Curve Fitting Toolbox 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).

person blutfink    schedule 14.04.2012

Вы можете попробовать это, http://www.cnblogs.com/begtostudy/articles/1787709.html

person Begtostudy    schedule 29.07.2010

Следующий код основан на этой ссылке.

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
person Yas    schedule 01.09.2017