【问题标题】:How can you draw a bezier curve in Matlabmatlab如何画出贝塞尔曲线
【发布时间】:2023-03-15 09:35:01
【问题描述】:

Matlab 绘制贝塞尔曲线的方法是什么?一定要自己动手吗?

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

【问题讨论】:

    标签: matlab bezier


    【解决方案1】:

    通过曲线拟合工具箱,Matlab 支持 B 样条,它是 Bézier 曲线的推广。没有内部结的有理 B 样条是贝塞尔样条。

    例如

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

    将绘制一条贝塞尔曲线,控制点位于 (0,0),(1,0),(1,1),(0,1)。

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

      • 谢谢。正如我在另一个答案中所说:我实际上是在问这个问题,因为我看到我儿子自己在 Matlab 中编写了贝塞尔曲线,我知道每个绘图程序都实现了这一点,所以在我看来,像 Matlab 的程序也应该有这个。
      【解决方案3】:

      【讨论】:

        【解决方案4】:

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2017-06-03
          • 1970-01-01
          相关资源
          最近更新 更多