2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




На страницу 1, 2  След.
 
 Вопрос по выводу уравнения кривой Безье
Сообщение29.09.2008, 17:44 
Аватара пользователя
В известной книге Шикина и Плиса "Кривые и поверхности на экране компьютера" есть раздел про кривые Безье, в котором приводится параметрическое уравнение кривой Безье и уравнение, эквивалентное ему, но в матричной форме. Пробую решить, но результат преобразования матриц не соответствует уравнению.
Итак, в матричной форме выражение для радиус-вектора выглядит следующим образом:

$\[{\mathbf{R}}\left( t \right) = {\mathbf{PMT}}\]$,

где $\[{\mathbf{R}}\left( t \right) = \left( {\begin{array}{*{20}c}   {x\left( t \right)}  \\   {y\left( t \right)}  \\   {z\left( t \right)}  \\ \end{array} } \right)\]$, $\[{\mathbf{M}} = \left( {\begin{array}{*{20}c}   1 & { - 3} & 3  & 1  \\   0 & 3 & { - 6} & 3  \\   0 & 0 & 3 & { - 3}  \\   0 & 0 & 0 & 1  \\ \end{array} } \right)\]$, $\[{\mathbf{T}} = \left( {\begin{array}{*{20}c}   {t^0 }  \\   {t^1 }  \\   {t^2 }  \\   {t^3 }  \\ \end{array} } \right)\]$,
$\[{\mathbf{P}} = \left( {\begin{array}{*{20}c}   {{\mathbf{P}}_0 } & {{\mathbf{P}}_1 } & {{\mathbf{P}}_2 } & {{\mathbf{P}}_3 }  \\ \end{array} } \right) = \left( {\begin{array}{*{20}c}   {x_0 } & {x_1 } & {x_2 } & {x_3 }  \\   {y_0 } & {y_1 } & {y_2 } & {y_3 }  \\   {z_0 } & {z_1 } & {z_2 } & {z_3 }  \\ \end{array} } \right)\]$.

После подстановки $\[{\mathbf{P}}\]$, $\[{\mathbf{M}}\]$ и $\[{\mathbf{T}}\]$ в выражение для $\[{\mathbf{R}}\left( t \right)\]$ должно получиться следующее параметрическое уравнение:
$\[{\mathbf{R}}\left( t \right) = \left( {\left( {\left( {1 - t} \right){\mathbf{P}}_0  + 3t{\mathbf{P}}_1 } \right)\left( {1 - t} \right) + 3t^2 {\mathbf{P}}_2 } \right)\left( {1 - t} \right) + t^3 {\mathbf{P}}_3 \]$.

Меня интересует двумерный случай, поэтому при подстановке вектора $\[{\mathbf{P}}\]$ в выражение для $\[{\mathbf{R}}\left( t \right)\]$, компоненты его третьей ($\[z\]$) координаты -- $\[z_0 \]$, $\[z_1 \]$, $\[z_2 \]$ и $\[z_3 \]$ -- опускаю, т.е. решаю без них (т.к. третья координата не нужна). Но результат НЕ сходится с параметрическим уравнением.
Выкладки очень уж объемные, поэтому здесь их не привожу, но перепроверил дважды - результат один и тот же - не сходится с параметрическим уравнением $\[{\mathbf{R}}\left( t \right) = \left( {\left( {\left( {1 - t} \right){\mathbf{P}}_0  + 3t{\mathbf{P}}_1 } \right)\left( {1 - t} \right) + 3t^2 {\mathbf{P}}_2 } \right)\left( {1 - t} \right) + t^3 {\mathbf{P}}_3 \]$.

Возможно, я что упустил из вида, помогите разобраться.

Заранее благодарю за помощь.

 
 
 
 
Сообщение29.09.2008, 21:15 
Перемножать можно матрицы размером m x n и n x k, где m,n.k -натуральные числа, причем в той последовательности, как они здесь записаны.Где первая буква- это число строк, вторая - число столбцов.
Ваши записи этому условию не удовлетворяют.

 
 
 
 
Сообщение29.09.2008, 21:43 
Аватара пользователя
Это Вы насчет матрицы M? Запись этой матрицы содержала опечатку. Сейчас я ее исправил.

 
 
 
 Re: Вопрос по выводу уравнения кривой Безье
Сообщение29.09.2008, 22:04 
artful7 писал(а):
После подстановки $\[{\mathbf{P}}\]$, $\[{\mathbf{M}}\]$ и $\[{\mathbf{T}}\]$ в выражение для $\[{\mathbf{R}}\left( t \right)\]$ должно получиться следующее параметрическое уравнение:
$\[{\mathbf{R}}\left( t \right) = \left( {\left( {\left( {1 - t} \right){\mathbf{P}}_0  + 3t{\mathbf{P}}_1 } \right)\left( {1 - t} \right) + 3t^2 {\mathbf{P}}_2 } \right)\left( {1 - t} \right) + t^3 {\mathbf{P}}_3 \]$.

(0) Конечно, сначала надо разобраться размерами матриц.

(1) Вы слишком исказили простую, симметричную, традиционную, красивую формулу
$$R( t ) = P_0(1 - t)^3 + 3P_1(1 - t)^2t+3P_2(1 - t)t^2+P_3t^3,$$
зачем-то наплодив в ней скобок, множителей, етц. Я, признаться, не дал себе труда проверить, совпадает ли она с приведённой мною.

(2) Вы не умеете делать эти громоздкие выкладки каким-нибудь пакетиком, Maple, например?

(3) Вы слишком сложно кодируете свой ТЕХ, типа $\verb вместо $\verb. Хотя, возможно, за Вас это делает какой-то автомат (Maple, например?). Но если Вы всё это творите ручками...

 
 
 
 
Сообщение29.09.2008, 22:05 
Предствьте конкретные матрицы, которые вы перемножаете (как Вы говорите двумерные), тогда посмотрим, проверим.

 
 
 
 
Сообщение29.09.2008, 22:33 
Аватара пользователя
vvvv писал(а):
Перемножать можно матрицы размером m x n и n x k, где m,n.k -натуральные числа, причем в той последовательности, как они здесь записаны.Где первая буква- это число строк, вторая - число столбцов.
Ваши записи этому условию не удовлетворяют.

Как я понимаю, m - это количество строк первой матрицы, n - количество столбцов первой матрицы. Вторая матрица должна содержать столько же строк, сколько первая матрица содержит столбцов. Разве это не соблюдается в первом перемножении ${\mathbf{PM}}$?

Добавлено спустя 7 минут 31 секунду:

Алексей К. писал(а):
(1) Вы слишком исказили простую, симметричную, традиционную, красивую формулу
$$R( t ) = P_0(1 - t)^3 + 3P_1(1 - t)^2t+3P_2(1 - t)t^2+P_3t^3,$$
зачем-то наплодив в ней скобок, множителей, етц. Я, признаться, не дал себе труда проверить, совпадает ли она с приведённой мною.


Нет нет! Я ничего не исказил. Читайте мой первый пост: именно такой вид параметрического уравнения приведен в книге Шикина и Плиса. Хотя они обе эквивалентны.

 
 
 
 
Сообщение29.09.2008, 23:02 
И еще, в перемножаемых матрицах отсутствует переменная (t) ?!

 
 
 
 
Сообщение29.09.2008, 23:24 
Аватара пользователя
vvvv писал(а):
И еще, в перемножаемых матрицах отсутствует переменная (t) ?!
А матрица T?

Добавлено спустя 1 минуту 54 секунды:

Честно говоря, я так и не понял, зачем мне в первых постах указывали на несоответствие матриц при перемножении?

Добавлено спустя 6 минут 48 секунд:

vvvv писал(а):
Предствьте конкретные матрицы, которые вы перемножаете (как Вы говорите двумерные), тогда посмотрим, проверим.


Перемножаемые матрицы следующие.
$\[{\mathbf{P}} = \left( {\begin{array}{*{20}c}   {x_0 } & {x_1 } & {x_2 } & {x_3 }  \\   {y_0 } & {y_1 } & {y_2 } & {y_3 }  \\ \end{array} } \right)\]$

$\[{\mathbf{M}} = \left( {\begin{array}{*{20}c}   1 & { - 3} & 3 & 1  \\   0 & 3 & { - 6} & 3  \\   0 & 0 & 3 & { - 3}  \\   0 & 0 & 0 & 1  \\ \end{array} } \right)\]$

$\[{\mathbf{T}} = \left( {\begin{array}{*{20}c}   {t^0 }  \\   {t^1 }  \\   {t^2 }  \\   {t^3 }  \\ \end{array} } \right)\]$

 
 
 
 Re: Вопрос по выводу уравнения кривой Безье
Сообщение30.09.2008, 00:28 
artful7 писал(а):
...
Итак, в матричной форме выражение для радиус-вектора выглядит следующим образом:

$\[{\mathbf{R}}\left( t \right) = {\mathbf{PMT}}\]$,

где $\[{\mathbf{R}}\left( t \right) = \left( {\begin{array}{*{20}c}   {x\left( t \right)}  \\   {y\left( t \right)}  \\   {z\left( t \right)}  \\ \end{array} } \right)\]$, $\[{\mathbf{M}} = \left( {\begin{array}{*{20}c}   1 & { - 3} & 3  & 1  \\   0 & 3 & { - 6} & 3  \\   0 & 0 & 3 & { - 3}  \\   0 & 0 & 0 & 1  \\ \end{array} } \right)\]$, $\[{\mathbf{T}} = \left( {\begin{array}{*{20}c}   {t^0 }  \\   {t^1 }  \\   {t^2 }  \\   {t^3 }  \\ \end{array} } \right)\]$,
$\[{\mathbf{P}} = \left( {\begin{array}{*{20}c}   {{\mathbf{P}}_0 } & {{\mathbf{P}}_1 } & {{\mathbf{P}}_2 } & {{\mathbf{P}}_3 }  \\ \end{array} } \right) = \left( {\begin{array}{*{20}c}   {x_0 } & {x_1 } & {x_2 } & {x_3 }  \\   {y_0 } & {y_1 } & {y_2 } & {y_3 }  \\   {z_0 } & {z_1 } & {z_2 } & {z_3 }  \\ \end{array} } \right)\]$.

В матрице $\[{\mathbf{M}}$ неправильный знак при единице. Должно быть
$$\[{\mathbf{M}} = \left( {\begin{array}{*{20}c}   1 & { - 3} & 3  & -1  \\   0 & 3 & { - 6} & 3  \\   0 & 0 & 3 & { - 3}  \\   0 & 0 & 0 & 1  \\ \end{array} } \right)\]$$.
artful7 писал(а):
После подстановки $\[{\mathbf{P}}\]$, $\[{\mathbf{M}}\]$ и $\[{\mathbf{T}}\]$ в выражение для $\[{\mathbf{R}}\left( t \right)\]$ должно получиться следующее параметрическое уравнение:
$\[{\mathbf{R}}\left( t \right) = \left( {\left( {\left( {1 - t} \right){\mathbf{P}}_0  + 3t{\mathbf{P}}_1 } \right)\left( {1 - t} \right) + 3t^2 {\mathbf{P}}_2 } \right)\left( {1 - t} \right) + t^3 {\mathbf{P}}_3 \]$.

Оно и получается, поскольку
$${\mathbf{MT}}
=
\left( 
\begin{array}{r}   
1 - 3t + 3t^2 - t^3 \\   
3t - 6t^2 + 3t^3  \\   
3t^2 - 3t^3  \\   
t^3   
\end{array} } 
\right)
=
\left( 
\begin{array}{r}   
(1 - t)^3\\   
3t(1 - t)^2 \\   
3t^2(1 - t)\\   
t^3   
\end{array} } 
\right)
$$.

 
 
 
 
Сообщение30.09.2008, 17:39 
Аватара пользователя
ДА!

Вчера вечером, когда я решил еще раз выполнить подстановку и проверить матричную запись, я тоже начал смутно догадываться, что дело не в ошибке моих подстановок, а в последней нижней единице из матрицы $\[{\mathbf{M}}\]$ Шикина и Плиса. Даже в справочник полез, чтобы проверить, как раскладывается $\[\left( {1 - t} \right)^3 \]$. Там прямо напрашивалось выражение $\[1 - 3t + 3t^2  - t^3 \]$ вместо получаемого $\[1 - 3t + 3t^2  + t^3 \]$ из-за ошибки в матрице $\[{\mathbf{M}}\]$. На опечатку это не похоже, т.к. такие же матрицы (с ошибкой) встречаются в книге и дальше.

Спасибо, что подтвердили мои сомнения насчет матрицы.

Добавлено спустя 1 час 7 минут 21 секунду:

Вот еще вопрос: почему базисная матрица в кубической кривой Безье заполнена именно так, а не иначе?

 
 
 
 Если я правильно понял Ваш вопрос...
Сообщение30.09.2008, 17:55 
Потому что, по определению, кривая Безье есть
$$R_n( t ) = \sum\limits_{i=0}^n C_{n}^{i} P_i t^i (1 - t)^{(n-i)}$$
в частности,
$$R_3( t ) = P_0(1 - t)^3 + 3P_1(1 - t)^2t+3P_2(1 - t)t^2+P_3t^3,$$
Из этого и получается такое заполнение матрицы.

 
 
 
 
Сообщение30.09.2008, 18:26 
Аватара пользователя
А разве уравнение Изображение получается не в результате подстановки в $\[{\mathbf{R}}\left( t \right) = {\mathbf{PMT}}\]$ векторов $\[{\mathbf{P}}\]$, $\[{\mathbf{M}}\]$ и $\[{\mathbf{T}}\]$?

Добавлено спустя 5 минут 50 секунд:

Матрица определяет вид уравнения или наоборот, из уравнения определяются элементы строк и столбцов матрицы?

 
 
 
 
Сообщение30.09.2008, 19:00 
Уравнение здесь изначально, в форме полиномов Бернштейна.
Посмотрите, как естественно это для "кривых" первого порядка.
Ежелеи кому-то хочется иметь это в матричном виде --- флаг в руки, пусть выводит... :?
Вот статья в Wikipedii (в русской тоже есть)

 
 
 
 
Сообщение30.09.2008, 19:07 
Аватара пользователя
Понятно, значит базисная матрица получается из уравнения.

А зачем переводить все в матричный вид, если для алгоритмизации удобнее параметрическое уравнение $\[{\mathbf{R}}\left( t \right) = \left( {\left( {\left( {1 - t} \right){\mathbf{P}}_0  + 3t{\mathbf{P}}_1 } \right)\left( {1 - t} \right) + 3t^2 {\mathbf{P}}_2 } \right)\left( {1 - t} \right) + t^3 {\mathbf{P}}_3 \]$?

 
 
 
 
Сообщение30.09.2008, 21:03 
artful7 в сообщении #147602 писал(а):
А зачем переводить все в матричный вид...?
Не знаю. Может, по Маяковскому ---

\noindent Виды всякие нужны,\\
Виды всякие важны!

 
 
 [ Сообщений: 26 ]  На страницу 1, 2  След.


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group