mirror of
https://github.com/Pomax/BezierInfo-2.git
synced 2025-09-03 13:23:27 +02:00
* ru-RU Aligning curves translation of Aligning curves chapter to Russian * Automated build * Automated build Co-authored-by: Mammoth <echo@mammothnotes.com> Co-authored-by: Bezierinfo CI <action@github.com> Co-authored-by: Pomax <pomax@nihongoresources.com>
48 lines
4.2 KiB
Markdown
48 lines
4.2 KiB
Markdown
# Выравнивание (пересчет) кривых
|
||
|
||
В то время как есть бесконечное множество кривых мы можем задать перемещая x и y кооординаты контрольных точек, не все кривые являются различными между собой. К примеру, если мы зададим кривую, затем повернем ее на 90 градусов, это будет все та же кривая, и все свойста, как, к примеру, точки экстримов, будут на тех же ее участках, только зарисованы на полотне координат в другой точке. Таким образом, одним из способов убедится, что мы работаем с "уникальными" кривыми, является выравнивание их с осями координат.
|
||
|
||
Выравнивание так же упрощает уравнение кривой. Мы можем транслитерировать (переместить) кривую таким образом, что первая ее точка будет лежать на точке начала координат (0,0), что, в свою очередь, переведет наш полиноминальную функцию *n* порядка, на порядок ниже, *(n-1)*. Последовательность останется такой же, но у нас будет меньше условий. Далее мы развернем кривую так, чтобы последняя точка тоже лежала на оси координат, переводя ее значение в (..., 0). Это далее упрощает ф-цию для ее формулы по Y переводя ее еще на порядок ниже. Так, если у нас была кубическая ф-ция:
|
||
|
||
\[
|
||
\left \{ \begin{matrix}
|
||
x = BLUE[120] \cdot (1-t)^3 BLUE[+ 35] \cdot 3 \cdot (1-t)^2 \cdot t BLUE[+ 220] \cdot 3 \cdot (1-t) \cdot t^2 BLUE[+ 220] \cdot t^3 \\
|
||
y = BLUE[160] \cdot (1-t)^3 BLUE[+ 200] \cdot 3 \cdot (1-t)^2 \cdot t BLUE[+ 260] \cdot 3 \cdot (1-t) \cdot t^2 BLUE[+ 40] \cdot t^3
|
||
\end{matrix} \right.
|
||
\]
|
||
|
||
Мы переместим первую точку в начало координат, смещая все значания x на -120 и y на -160:
|
||
|
||
\[
|
||
\left \{ \begin{matrix}
|
||
x = RED[0] \cdot (1-t)^3 BLUE[- 85] \cdot 3 \cdot (1-t)^2 \cdot t BLUE[+ 100] \cdot 3 \cdot (1-t) \cdot t^2 BLUE[+ 100] \cdot t^3 \\
|
||
y = RED[0] \cdot (1-t)^3 BLUE[+ 40] \cdot 3 \cdot (1-t)^2 \cdot t BLUE[+ 100] \cdot 3 \cdot (1-t) \cdot t^2 BLUE[- 120] \cdot t^3
|
||
\end{matrix} \right.
|
||
\]
|
||
|
||
Затем, повернем кривую до оси X (новые значания x и y округлены в иллюстративных целях):
|
||
|
||
\[
|
||
\left \{ \begin{matrix}
|
||
x = RED[0] \cdot (1-t)^3 BLUE[- 85] \cdot 3 \cdot (1-t)^2 \cdot t BLUE[- 12] \cdot 3 \cdot (1-t) \cdot t^2 BLUE[+ 156] \cdot t^3 \\
|
||
y = RED[0] \cdot (1-t)^3 BLUE[- 40] \cdot 3 \cdot (1-t)^2 \cdot t BLUE[+ 140] \cdot 3 \cdot (1-t) \cdot t^2 RED[+ 0] \cdot t^3
|
||
\end{matrix} \right.
|
||
\]
|
||
|
||
Итак, опуская все нулевые значения, получаем
|
||
|
||
\[
|
||
\left \{ \begin{array}{l}
|
||
x = BLUE[- 85] \cdot 3 \cdot (1-t)^2 \cdot t BLUE[- 12] \cdot 3 \cdot (1-t) \cdot t^2 BLUE[+ 156] \cdot t^3 \\
|
||
y = BLUE[- 40] \cdot 3 \cdot (1-t)^2 \cdot t BLUE[+ 140] \cdot 3 \cdot (1-t) \cdot t^2
|
||
\end{array} \right.
|
||
\]
|
||
|
||
Как мы видим, наше изначальное определение кривой было существенно упрощено. Следущие зарисовки демострируют результат выравнивание кривой с осью X. первый рисунок соотвествует приведеному выше примеру кривой.
|
||
|
||
<graphics-element title="Aligning a quadratic curve" width="550" src="./aligning.js" data-type="quadratic"></graphics-element>
|
||
|
||
|
||
|
||
<graphics-element title="Aligning a cubic curve" width="550" src="./aligning.js" data-type="cubic"></graphics-element>
|