exponenta event banner

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 задайте контрольные точки кривой Безье. Например, чтобы построить 3D кривую Безье второго порядка, определите контрольные точки как:
P = [p0x, p0y, p0z;  p1x, p1y, p1z;  p2x, p2y, p2z]

Примеры

свернуть все

Постройте график кривой Безье четвертого порядка, заданной контрольными точками 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);

Создайте кривую Безье.

bezierCurve = simplify(B*P);

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

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

Figure contains an axes. The axes with title Fourth-order Bezier curve contains 2 objects of type parameterizedfunctionline, scatter.

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

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

Вычислите матрицу Бернштейна третьего порядка.

syms t
B = bernsteinMatrix(3,t);

Создайте кривую Безье.

bezierCurve = simplify(B*P);

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

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

Figure contains an axes. The axes contains 2 objects of type parameterizedfunctionline, scatter.

Создайте кривую Безье третьего порядка с точкой вычисления, указанной следующим образом 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

Figure contains an axes. The axes contains 2 objects of type line, scatter.

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

свернуть все

Порядок аппроксимации, заданный как неотрицательное целое число.

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

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

свернуть все

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

См. также

| | |

Представлен в R2013b