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

Для просмотра документации необходимо авторизоваться на сайте