先简单回顾一下,已知贝塞尔曲线的控制点,求贝塞尔曲线
这是公式
是贝塞尔曲线,
是第
个控制点
,
是贝塞尔曲线的阶数(控制点数目减一)。
这部分很多人写过了,就简单略过。
之前用matlab写的代码
clear all;
close all;
P = [10, 15, 25, 30;
30, 35, 25, 30];
plot (P(1,:),P(2,:));
hold on;
n = size (P,2)-1;
t = linspace(0,1,101);
Bezier = zeros(2,101); % 最终的曲线坐标
B = zeros(2,101);
for i = 0:n
for j = 1:101
if i == 0 || i==n
B(1,j) = P(1,i+1) * t(j)^i * (1-t(j))^(n-i);
B(2,j) = P(2,i+1) * t(j)^i * (1-t(j))^(n-i);
else
B(1,j) = P(1,i+1) * prod(1:n) / prod(1:i) / prod(1:n-i) * (t(j))^i * (1-t(j))^(n-i);
B(2,j) = P(2,i+1) * prod(1:n) / prod(1:i) / prod(1:n-i)