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

发布于 2024-08-22 06:04:25 字数 87 浏览 5 评论 0原文

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

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

What's the Matlab way to draw a Bezier curve ? Do you have to prgoram it yourself ?

I am not looking for a user made routine, but am asking if Matlab offers a standard way to draw them.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

林空鹿饮溪 2024-08-29 06:04:25

通过 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) 的贝塞尔曲线。

With the Curve Fitting Toolbox, Matlab supports B-splines, which are a generalization of Bézier curves. A rational B-spline with no internal knots is a Bézier spline.

For example

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

would plot a Bézier curve with control points at (0,0),(1,0),(1,1),(0,1).

陌上芳菲 2024-08-29 06:04:25

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

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

After looking and searching through the documentation, my answer is No: you'd have to go with one of the 3rd party implementations.

Likeliest candidate would be the interp family functions, and they implement no Bezier interpolation.

瀞厅☆埖开 2024-08-29 06:04:25

以下代码基于此链接

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

The following code based on this 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
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文