bernsteinMatrix

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

Синтаксис

B = bernsteinMatrix(n,t)

Описание

пример

B = bernsteinMatrix(n,t), то, где t является вектором, возвращает length(t)-by-(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-by-101 векторный t:

t = 0:1/100:1;

Вычислите третий порядок 101-by-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)-by-n+1 матрица.

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

| | |

Введенный в R2013b