【发布时间】:2023-03-15 09:35:01
【问题描述】:
Matlab 绘制贝塞尔曲线的方法是什么?一定要自己动手吗?
我不是在寻找用户制作的例程,而是在询问 Matlab 是否提供绘制它们的标准方法。
【问题讨论】:
Matlab 绘制贝塞尔曲线的方法是什么?一定要自己动手吗?
我不是在寻找用户制作的例程,而是在询问 Matlab 是否提供绘制它们的标准方法。
【问题讨论】:
通过曲线拟合工具箱,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)。
【讨论】:
查看和搜索文档后,我的回答是否定的:您必须使用第 3 方实现之一。
最可能的候选者是interp 系列函数,它们不实现贝塞尔插值。
【讨论】:
【讨论】:
以下代码基于此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
【讨论】: