如何在Matlab中绘制贝塞尔曲线
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是否提供了绘制它们的标准方法。在查看并搜索了文档之后,我的答案是否定的:您必须使用第三方实现之一
最有可能的候选函数是
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