如何在Matlab中绘制贝塞尔曲线

时间:2010-02-20 09:54:02

标签: matlab bezier

绘制Bezier曲线的Matlab方法是什么?你需要自己编程吗?

我不是在寻找用户制定的例行程序,而是在问Matlab是否提供了一种标准的绘制方法。

4 个答案:

答案 0 :(得分:4)

使用曲线拟合工具箱,Matlab支持B样条,这是Bézier曲线的推广。没有内部结的合理B样条是Bézier样条。

例如

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

将绘制一条Bézier曲线,控制点位于(0,0),(1,0),(1,1),(0,1)。

答案 1 :(得分:2)

在查看和搜索文档之后,我的答案是否定的:您必须使用其中一个第三方实现。

最简单的候选人将是interp家庭功能,他们不实施贝塞尔插值。

答案 2 :(得分:2)

答案 3 :(得分:2)

以下代码基于此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