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

5

如何在Matlab中绘制贝塞尔曲线?您是否需要自己编写程序?

我不是在寻找用户自定义程序,而是想知道Matlab是否提供了标准的绘制方法。

4个回答

4
使用曲线拟合工具箱,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)处设置控制点来绘制一条贝塞尔曲线。


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

2

在查阅文档后,我的答案是否定的:您必须选择第三方实现。

最有可能的候选者是interp系列函数,它们不支持贝塞尔插值。


谢谢。如我在另一个回答中所说,我实际上是因为看到我儿子在Matlab中自己编程贝塞尔曲线,而知道每个绘图程序都实现了这一点,所以我觉得Matlab这样的程序也应该有这个功能。 - Edelcom


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接