mirror of
https://github.com/Pomax/BezierInfo-2.git
synced 2025-08-20 23:41:49 +02:00
ru-RU translation (#295)
* 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 Co-authored-by: Mammoth <echo@mammothnotes.com>
This commit is contained in:
156
docs/chapters/derivatives/content.ru-RU.md
Normal file
156
docs/chapters/derivatives/content.ru-RU.md
Normal file
@@ -0,0 +1,156 @@
|
||||
# Производные кривых Безье
|
||||
|
||||
Есть целый ряд вещей, которые мы можем сотворить с кривыми Безье базируясь на их производных, и одним восхитительным наблюдением на счет первых, является то, что их производные по сути тоже являются кривыми Безье. На практике, дифференциация кривых Безье относительно логична, хотя нам и потребуется немного математики.
|
||||
|
||||
Для начала рассмотрим правило производных для кривых Безье:
|
||||
|
||||
\[
|
||||
Bézier'(n,t) = n \cdot \sum_{i=0}^{n-1} (b_{i+1}-b_i) \cdot Bézier(n-1,t)_i
|
||||
\]
|
||||
|
||||
которое мы так же можем записать (отметив что <i>b</i> в этой формуле, то-же что наш <i>w</i> "вес", а <i>n</i> умноженная на функцию сумы — то-же что функция сумы, с каждой составляющей умноженной на <i>n</i>) как:
|
||||
|
||||
\[
|
||||
Bézier'(n,t) = \sum_{i=0}^{n-1} Bézier(n-1,t)_i \cdot n \cdot (w_{i+1}-w_i)
|
||||
\]
|
||||
|
||||
Другими словами, производная кривой Безье n<sup>го</sup> порядка равна кривой Безье на порядок ниже (n-1), соответственно имея на один термин составляющих меньше, где новые веса w'<sub>0</sub>...w'<sub>n-1</sub> произведены из оригинальных по принципу n(w<sub>i+1</sub> - w<sub>i</sub>). Так, для кривой 3<sup>го</sup> порядка, с 4мя весами, производная имеет 3 веса: w'<sub>0</sub> = 3(w<sub>1</sub>-w<sub>0</sub>), w'<sub>1</sub> = 3(w<sub>2</sub>-w<sub>1</sub>) и w'<sub>2</sub> = 3(w<sub>3</sub>-w<sub>2</sub>).
|
||||
|
||||
<div class="note">
|
||||
|
||||
### "Погодите, а почему это работает?"
|
||||
|
||||
Порой, когда говорят "вот она производная", наше счастье приходит немедленно и остается неизменным вне зависимости от следующих аргументов. Но, возможно, вам захочется покопаться в доказательствах производной. Если так, то для начала оговоримся: веса независимы от общей формулы функции, потому производная кривой затрагивает только производные полиноминалов базовой функции. Найдем сперва это:
|
||||
|
||||
\[
|
||||
B_{n,k}(t) \frac{d}{dt} = {n \choose k} t^k (1-t)^{n-k} \frac{d}{dt}
|
||||
\]
|
||||
|
||||
Приминение [правил продукта](https://ru.qaz.wiki/wiki/Product_rule) и [цепного правила](https://ru.qaz.wiki/wiki/Chain_rule) (* в оригинале [другие](https://en.wikipedia.org/wiki/Product_rule) [ссылки](https://en.wikipedia.org/wiki/Chain_rule)) дает нам следующее:
|
||||
|
||||
\[
|
||||
\begin{array}{l}
|
||||
... = {n \choose k} \left (
|
||||
k \cdot t^{k-1} (1-t)^{n-k} + t^k \cdot (1-t)^{n-k-1} \cdot (n-k) \cdot -1
|
||||
\right )
|
||||
\end{array}
|
||||
\]
|
||||
|
||||
В таком виде с этой формулой работать сложно, потому раскроем:
|
||||
|
||||
\[
|
||||
\begin{array}{l}
|
||||
... = \frac{kn!}{k!(n-k)!} t^{k-1} (1-t)^{n-k} - \frac{(n-k)n!}{k!(n-k)!} t^k (1-t)^{n-1-k}
|
||||
\end{array}
|
||||
\]
|
||||
|
||||
Теперь фокус заключается в трансформации этой функции во что-то, что бы имело биноминальные коэффициенты, потому как мы хотим получить выражение в форме вроде "x! деленное на y!(x-y)!". Если нам удастся сделать это так, чтобы учесть в запись термины <i>n-1</i> и <i>k-1</i> — мы на верном пути.
|
||||
|
||||
\[
|
||||
\begin{array}{l}
|
||||
... = \frac{n!}{(k-1)!(n-k)!} t^{k-1} (1-t)^{n-k} - \frac{(n-k)n!}{k!(n-k)!} t^k (1-t)^{n-1-k} \\
|
||||
|
||||
... = n \left (
|
||||
\frac{(n-1)!}{(k-1)!(n-k)!} t^{k-1} (1-t)^{n-k} - \frac{(n-k)(n-1)!}{k!(n-k)!} t^k (1-t)^{n-1-k}
|
||||
\right ) \\
|
||||
|
||||
... = n \left (
|
||||
\frac{(n-1)!}{(k-1)!((n-1)-(k-1))!} t^{(k-1)} (1-t)^{(n-1)-(k-1)} - \frac{(n-1)!}{k!((n-1)-k)!} t^k (1-t)^{(n-1)-k}
|
||||
\right )
|
||||
\end{array}
|
||||
\]
|
||||
|
||||
Первая часть готова: компоненты в скобках на самом то деле обычные выражения кривых Безье на порядок ниже:
|
||||
|
||||
\[\begin{array}{l}
|
||||
... = n \left (
|
||||
\frac{x!}{y!(x-y)!} t^{y} (1-t)^{x-y} - \frac{x!}{k!(x-k)!} t^k (1-t)^{x-k}
|
||||
\right )
|
||||
~,~где~x=n-1,~y=k-1
|
||||
\\
|
||||
... = n \left ( B_{(n-1),(k-1)}(t) - B_{(n-1),k}(t) \right )
|
||||
\end{array}
|
||||
\]
|
||||
|
||||
Теперь применим это к записям наших формул с "весами". Начнем с формулы кривой Безье приведенной выше и пройдемся по ее производным.
|
||||
|
||||
\[\begin{array}{lcl}
|
||||
Bézier_{n,k}(t) &=& B_{n,0}(t) \cdot w_0 + B_{n,1}(t) \cdot w_1 + B_{n,2}(t) \cdot w_2 + B_{n,3}(t) \cdot w_3 + ... \\
|
||||
Bézier_{n,k}(t) \frac{d}{dt} &=& n \cdot (B_{n-1,-1}(t) - B_{n-1,0}(t)) \cdot w_0 + \\
|
||||
& & n \cdot (B_{n-1,0}(t) - B_{n-1,1}(t)) \cdot w_1 + \\
|
||||
& & n \cdot (B_{n-1,1}(t) - B_{n-1,2}(t)) \cdot w_2 + \\
|
||||
& & n \cdot (B_{n-1,2}(t) - B_{n-1,3}(t)) \cdot w_3 + \\
|
||||
& & ...
|
||||
\end{array}\]
|
||||
|
||||
Раскрыв это (немного раскрасив, чтобы подчеркнуть соотношение терминов), и выстроив термины по возрастанию значений, мы увидим следующее:
|
||||
|
||||
\[\begin{array}{lclc}
|
||||
n \cdot B_{n-1,-1}(t) \cdot w_0 &+& & \\
|
||||
n \cdot B_{n-1,BLUE[0]}(t) \cdot w_1 &-& n \cdot B_{n-1,BLUE[0]}(t) \cdot w_0 & + \\
|
||||
n \cdot B_{n-1,RED[1]}(t) \cdot w_2 &-& n \cdot B_{n-1,RED[1]}(t) \cdot w_1 & + \\
|
||||
n \cdot B_{n-1,MAGENTA[2]}(t) \cdot w_3 &-& n \cdot B_{n-1,MAGENTA[2]}(t) \cdot w_2 & + \\
|
||||
... &-& n \cdot B_{n-1,3}(t) \cdot w_3 & + \\
|
||||
... & & &
|
||||
\end{array}\]
|
||||
|
||||
Два из приведенных терминов отпадают. Первый — потому что степень <i>-1</i> не присутствует в суме, оттого каждый раз приводя "ничего" в результат. Можем смело игнорировать это значение в нахождении производной функции. Второй — самый последний термин этой записи, затрагивающий <i>B<sub>n-1,n</sub></i>. Этот термин имел-бы биноминальный коэффициент [<i>i</i> указывая на <i>i+1</i>], который не существуюет. И опять — термин ничего не привносит в результат, затем также может быть проигнорирован. Это значит, нам остается:
|
||||
|
||||
\[\begin{array}{lclc}
|
||||
n \cdot B_{n-1,BLUE[0]}(t) \cdot w_1 &-& n \cdot B_{n-1,BLUE[0]}(t) \cdot w_0 &+ \\
|
||||
n \cdot B_{n-1,RED[1]}(t) \cdot w_2 &-& ~n \cdot B_{n-1,RED[1]}(t) \cdot w_1 &+ \\
|
||||
n \cdot B_{n-1,MAGENTA[2]}(t) \cdot w_3 &-& n \cdot B_{n-1,MAGENTA[2]}(t) \cdot w_2 &+ \\
|
||||
...
|
||||
\end{array}\]
|
||||
|
||||
И это по сути формула функции сумы на 1 порядок ниже:
|
||||
|
||||
\[
|
||||
Bézier_{n,k}(t) \frac{d}{dt} = n \cdot B_{(n-1),BLUE[0]}(t) \cdot (w_1 - w_0)
|
||||
+ n \cdot B_{(n-1),RED[1]}(t) \cdot (w_2 - w_1)
|
||||
+ n \cdot B_{(n-1),MAGENTA[2]}(t) \cdot (w_3 - w_2)
|
||||
~+ ~...
|
||||
\]
|
||||
|
||||
Можно переписать по стандартной форме сумы, и готово:
|
||||
|
||||
|
||||
\[
|
||||
Bézier_{n,k}(t) \frac{d}{dt} = \sum_{k=0}^{n-1} n \cdot B_{n-1,k}(t) \cdot (w_{k+1} - w_k)
|
||||
= \sum_{k=0}^{n-1} B_{n-1,k}(t) \cdot \underset{вес~производной}
|
||||
{\underbrace{n \cdot (w_{k+1} - w_k)}}
|
||||
\]
|
||||
|
||||
</div>
|
||||
|
||||
Давайте перепишем это по форме схожей с нашей исходной формулой, чтобы легче было разглядеть разницу. Сначала оригинальная формула, за ней производная:
|
||||
|
||||
\[
|
||||
Bézier(n,t) = \sum_{i=0}^{n}
|
||||
\underset{биноминальный~термин}{\underbrace{\binom{n}{i}}}
|
||||
\cdot\
|
||||
\underset{полиноминальный~термин}{\underbrace{(1-t)^{n-i} \cdot t^{i}}}
|
||||
\cdot\
|
||||
\underset{вес}{\underbrace{w_i}}
|
||||
\]
|
||||
|
||||
\[
|
||||
Bézier'(n,t) = \sum_{i=0}^{k}
|
||||
\underset{биноминальный~термин}{\underbrace{\binom{k}{i}}}
|
||||
\cdot\
|
||||
\underset{полиноминальный~термин}{\underbrace{(1-t)^{k-i} \cdot t^{i}}}
|
||||
\cdot\
|
||||
\underset{вес~производной}{\underbrace{n \cdot (w_{i+1} - w_i)}}
|
||||
{~, ~with ~k=n-1}
|
||||
\]
|
||||
|
||||
И в чем же разница? В терминах формулы кривой Безье, по сути, никакой! Мы уменьшили порядок (вместо порядка <i>n</i>, он теперь <i>n-1</i>), но это все та же функция Безье. Единственное отличие в подсчете изменений в "весах" при нахождении производной. К примеру, исходя из 4-х контрольных точек A, B, C и D, первая производная получит 3 точки, вторая — 2, третья — 1:
|
||||
|
||||
\[ \begin{array}{llll}
|
||||
B(n,t), & & w = \{A,B,C,D\} \\
|
||||
B'(n,t), & n = 3, & w' = \{A',B',C'\} &= \{3 \cdot (B-A), {~} 3 \cdot (C-B), {~} 3 \cdot (D-C)\} \\
|
||||
B''(n,t), & n = 2, & w'' = \{A'',B''\} &= \{2 \cdot (B'-A'), {~} 2 \cdot (C'-B')\} \\
|
||||
B'''(n,t), & n = 1, & w''' = \{A'''\} &= \{1 \cdot (B''-A'')\}
|
||||
\end{array} \]
|
||||
|
||||
Можно продолжать производить этот фокус, до тех пор пока у нас имеется более одного веса. Когда же остается один вес, следующим шагом будет <i>k = 0</i>, и результат сложения "функции сумы Безье" будет равен 0, поскольку мы ничего ни с чем не слагаем. По этому у квадратной функций нету второй производной, у кубической — третей, и, обобщая, кривая Безье <i>n<sup>го</sup></i> порядка, имеет <i>n-1</i> (внятных) производных, с каждой следующей производной равной нулю.
|
Reference in New Issue
Block a user