* ru-RU introduction Translation of introduction to Russian * ru-RU whatis Translation of chapter 2 to Russian * (fixup) ru-RU intro fixed missing translations * ru-RU index.html Translated header, meta, title and link names for existing chapter's traslations. (will be updated with every new commit) * ru-RU locale strings Locale string russian traslations * locale fixup * build chapters 1,2 * ru-RU explanation translation of explanation to Russian. * ru-RU control translation of #control to Russian * ru-RU weightcontrol translation of #weightcontrol to Russian * ru-RU derivatives translation of #derivatives to Russian * (fixup) ru-RU weightcontrol * (fixup) ru-RU explanation * ru-RU extended * (fixup) ru-RU derivatives add newline to the end of paragraph * ru-RU decasteljau * ru-RU matrix Co-authored-by: Mammoth <echo@mammothnotes.com>
6.6 KiB
Кривые Безье как матричные уравнения
Мы также можем представить кривые Безье как матричную операцию, выразив формулу Безье как функцию с полиноминальноминальной основой, матрицу коэффициентов и матрицу конкретных координат. Давайте рассмотрим что это значит для уравнений кубических кривых Безье, используя P... для обозначения координат в "одном или более пространстве".
[ B(t) = P_1 \cdot (1-t)^3 + P_2 \cdot 3 \cdot (1-t)^2 \cdot t + P_3 \cdot 3 \cdot (1-t) \cdot t^2 + P_4 \cdot t^3 ]
Обобщив, игнорируя конкретные значения, мы получим:
[ B(t) = (1-t)^3 + 3 \cdot (1-t)^2 \cdot t + 3 \cdot (1-t) \cdot t^2 + t^3 ]
Это, в свою очередь, может быть записано как:
[ \begin{matrix} ... & = & (1-t)^3 \ & + & 3 \cdot (1-t)^2 \cdot t \ & + & 3 \cdot (1-t) \cdot t^2 \ & + & t^3 \ \end{matrix} ]
Последнее мы можем раскрыть, записав как:
[ \begin{matrix} ... & = & (1-t) \cdot (1-t) \cdot (1-t) & = & -t^3 + 3 \cdot t^2 - 3 \cdot t + 1 \ & + & 3 \cdot (1-t) \cdot (1-t) \cdot t & = & 3 \cdot t^3 - 6 \cdot t^2 + 3 \cdot t \ & + & 3 \cdot (1-t) \cdot t \cdot t & = & -3 \cdot t^3 + 3 \cdot t^2 \ & + & t \cdot t \cdot t & = & t^3 \ \end{matrix} ]
Более того можно записать с коэффициентами 1 и 0, включив нивелированные термины:
[ \begin{matrix} ... & = & -1 \cdot t^3 + 3 \cdot t^2 - 3 \cdot t + 1 \ & + & +3 \cdot t^3 - 6 \cdot t^2 + 3 \cdot t + 0 \ & + & -3 \cdot t^3 + 3 \cdot t^2 + 0 \cdot t + 0 \ & + & +1 \cdot t^3 + 0 \cdot t^2 + 0 \cdot t + 0 \ \end{matrix} ]
И уже это можно рассматривать как серию четырех матричных операций:
[ \begin{bmatrix}t^3 & t^2 & t & 1\end{bmatrix} \cdot \begin{bmatrix}-1 \ 3 \ -3 \ 1\end{bmatrix}
- \begin{bmatrix}t^3 & t^2 & t & 1\end{bmatrix} \cdot \begin{bmatrix}3 \ -6 \ 3 \ 0\end{bmatrix}
- \begin{bmatrix}t^3 & t^2 & t & 1\end{bmatrix} \cdot \begin{bmatrix}-3 \ 3 \ 0 \ 0\end{bmatrix}
- \begin{bmatrix}t^3 & t^2 & t & 1\end{bmatrix} \cdot \begin{bmatrix}1 \ 0 \ 0 \ 0\end{bmatrix} ]
Скомбинировав в единую матричную операцию, получим:
[ \begin{bmatrix}t^3 & t^2 & t & 1\end{bmatrix} \cdot \begin{bmatrix} -1 & 3 & -3 & 1 \ 3 & -6 & 3 & 0 \ -3 & 3 & 0 & 0 \ 1 & 0 & 0 & 0 \end{bmatrix} ]
Такой тип функций полиноминальной основы зачастую записывается с основой в возрастающем порядке, что значит мы должны обернуть нашу t
матрицу горизонтально, а нашу "большую" матрицу — вертикально:
[ \begin{bmatrix}1 & t & t^2 & t^3\end{bmatrix} \cdot \begin{bmatrix} 1 & 0 & 0 & 0 \ -3 & 3 & 0 & 0 \ 3 & -6 & 3 & 0 \ -1 & 3 & -3 & 1 \end{bmatrix} ]
Наконец, мы можем добавить оригинальные координаты единой третьей матрицей:
[ B(t) = \begin{bmatrix} 1 & t & t^2 & t^3 \end{bmatrix} \cdot \begin{bmatrix} 1 & 0 & 0 & 0 \ -3 & 3 & 0 & 0 \ 3 & -6 & 3 & 0 \ -1 & 3 & -3 & 1 \end{bmatrix} \cdot \begin{bmatrix} P_1 \ P_2 \ P_3 \ P_4 \end{bmatrix} ]
Такой же фокус может быть проделан с квадратной кривой, в коем случае мы получаем:
[ B(t) = \begin{bmatrix} 1 & t & t^2 \end{bmatrix} \cdot \begin{bmatrix} 1 & 0 & 0 \ -2 & 2 & 0 \ 1 & -2 & 1 \end{bmatrix} \cdot \begin{bmatrix} P_1 \ P_2 \ P_3 \end{bmatrix} ]
Подставив t
и перемножив матрицы, мы получим такие-же значения, как при подсчете с использованием исходной полиноминальной функции или графического метода интерполяции.
Итак: зачем нам возится с матрицами? Матричное произведение раскрывает свойства функции кривых, которые в противном случае, было бы сложно обнаружить. Например, мы видим, что наша функция принадлежит к типу треугольных матриц (* в оригинале другая ссылка), определенные количеством контрольных координат и обладают всеми соответствующими свойствами. Также, что они могут быть обернуты, что в свою очередь определяет тонну других свойств (* в оригинале другая ссылка), применимых к нашим кривым. Конечно же, основным вопросом остается: "В чем состоит польза?". Тогда как ответ не становится очевидным немедленно, чуть далее мы увидим определенные случаи, где некоторые свойства кривых могут быть исчислены посредством манипуляции функцией, либо остроумным использованием матриц, и иногда последнее намного быстрее.
Потому пока давайте запомним, что функции могут быть описаны таким образом, и будем двигаться дальше.