bernsteinMatrix

Матрица Бернстайна

Синтаксис

Описание

пример

B = bernsteinMatrix(n,t), где t вектор, возвращает length(t)- (n+1) Матрица Бернстайна B, таким образом, что B(i,k+1)= nchoosek(n,k)*t(i)^k*(1-t(i))^(n-k). Здесь, индекс i запуски от 1 до length(t), и индекс k запуски от 0 к n.

Матрица Бернстайна также называется матрицей Безье.

Используйте матрицы Бернстайна, чтобы создать Кривые Безье:

bezierCurve = bernsteinMatrix(n, t)*P
Здесь, n+1 строки матричного P задайте контрольные точки Кривой Безье. Например, чтобы создать 3-D Кривую Безье второго порядка, задайте контрольные точки как:
P = [p0x, p0y, p0z;  p1x, p1y, p1z;  p2x, p2y, p2z]

Примеры

2D кривая Безье

Постройте четвертый порядок Кривая Безье, заданная контрольными точками p0 = [0 1], p1 = [4 3], p2 = [6 2], p3 = [3 0], p4 = [2 4]. Создайте матрицу с каждой строкой, представляющей контрольную точку:

P = [0 1; 4 3; 6 2; 3 0; 2 4];

Вычислите четвертый порядок матрица Бернстайна B:

syms t
B = bernsteinMatrix(4, t)
B =
[ (t - 1)^4, -4*t*(t - 1)^3, 6*t^2*(t - 1)^2, -4*t^3*(t - 1), t^4]

Создайте Кривую Безье:

bezierCurve = simplify(B*P)
bezierCurve =
[ -2*t*(- 5*t^3 + 6*t^2 + 6*t - 8), 5*t^4 + 8*t^3 - 18*t^2 + 8*t + 1]

Постройте кривую, добавляющую контрольные точки в график:

fplot(bezierCurve(1), bezierCurve(2), [0, 1])
hold on
scatter(P(:,1), P(:,2),'filled')
title('Fourth-order Bezier curve')
hold off

3-D кривая Безье

Создайте третий порядок Кривая Безье, заданная 4 3 матричным P из контрольных точек. Каждая контрольная точка соответствует строке матричного P.

P = [0 0 0; 2 2 2; 2 -1 1; 6 1 3];

Вычислите третий порядок матрица Бернстайна:

syms t
B = bernsteinMatrix(3,t)
B =
[ -(t - 1)^3, 3*t*(t - 1)^2, -3*t^2*(t - 1), t^3]

Создайте Кривую Безье:

bezierCurve = simplify(B*P)
bezierCurve =
[ 6*t*(t^2 - t + 1), t*(10*t^2 - 15*t + 6), 3*t*(2*t^2 - 3*t + 2)]

Постройте кривую, добавляющую контрольные точки в график:

fplot3(bezierCurve(1), bezierCurve(2), bezierCurve(3), [0, 1])
hold on
scatter3(P(:,1), P(:,2), P(:,3),'filled')
hold off

3-D кривая Безье с точкой оценки, заданной как вектор

Создайте третий порядок Кривая Безье с точкой оценки, заданной следующим 1- 101 векторный t:

t = 0:1/100:1;

Вычислите третий порядок 101- 4 Матрица Бернстайна и задает контрольные точки:

B = bernsteinMatrix(3,t);
P = [0 0 0; 2 2 2; 2 -1 1; 6 1 3];

Создайте и постройте Кривую Безье. Добавьте линии сетки и контрольные точки к графику.

bezierCurve = B*P;
plot3(bezierCurve(:,1), bezierCurve(:,2), bezierCurve(:,3))
hold on
grid
scatter3(P(:,1), P(:,2), P(:,3),'filled')
hold off

Входные параметры

свернуть все

Порядок приближения в виде неотрицательного целого числа.

Точка оценки в виде номера, символьного числа, переменной, выражения или вектора.

Выходные аргументы

свернуть все

Матрица Бернстайна, возвращенная как length(t)- n+1 матрица.

Смотрите также

| | |

Введенный в R2013b