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

如何在Matlab中绘制贝塞尔曲线,matlab,bezier,Matlab,Bezier,Matlab绘制贝塞尔曲线的方法是什么?你必须自己动手吗 我不是在寻找用户制作的例程,而是在询问Matlab是否提供了绘制它们的标准方法。在查看并搜索了文档之后,我的答案是否定的:您必须使用第三方实现之一 最有可能的候选函数是interp族函数,它们不实现Bezier插值。您可以尝试此方法,使用曲线拟合工具箱,Matlab支持B样条曲线,这是Bézier曲线的推广。没有内部节点的有理B样条是Bézier样条 比如说 p = spmak([0 0 0 1 1 1],[1 0;0 1]); fnpl

Matlab绘制贝塞尔曲线的方法是什么?你必须自己动手吗


我不是在寻找用户制作的例程,而是在询问Matlab是否提供了绘制它们的标准方法。

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


最有可能的候选函数是
interp
族函数,它们不实现Bezier插值。

您可以尝试此方法,

使用曲线拟合工具箱,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)。

以下代码基于此


谢谢。正如我在另一个答案中所说的:我问这个问题是因为我看到我儿子自己在Matlab中编程贝塞尔曲线,我知道每个绘图程序都实现了这一点,所以我觉得像Matlab这样的程序也应该有这一点。
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