kurse:efcomputergrafik:kw7

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
kurse:efcomputergrafik:kw7 [2020/02/12 09:08] Ivo Blöchligerkurse:efcomputergrafik:kw7 [2020/02/12 09:59] (current) Ivo Blöchliger
Line 1: Line 1:
 +====== Bessere Bahnkurven ======
 +Gegeben $x_i$: Punkte, durch die die Bahn gehen soll.
 +
 +Gesucht $l_i$, $r_i$: Linke (rückwärts) und rechte (vorwärts) Kontrollpunkte.
 +Hilfsvariable $\lambda$.
 +
 +Gleichungen:
 +\begin{align*}
 +(r_i-x_i) & = \lambda (x_i - l_i) & \text{Tangenten fallen zusammen} \\
 +N_i(0) & = N_{i-1}(1) & \text{Beschleunigungsvektor ist stetig} \\
 +\tau_i(0) & = \tau_{i-1}(1) & \text{Torsion ist stetig} \\
 +\end{align*}
 +
 +Siehe https://en.wikipedia.org/wiki/Frenet%E2%80%93Serret_formulas#Formulas_in_n_dimensions
 +
 +und https://en.wikipedia.org/wiki/Torsion_of_a_curve#Alternative_description
 +
 +
 +Schön und gut, aber die Gleichungen sind nichtlinear... z.B. sieht die letzte Gleichung etwa so aus:
 +$${{\left(\left(3\,{\it ri}_{1}-3\,\xi_{1}\right)\,\left(6\,\xi_{2}-
 + 12\,{\it ri}_{2}+6\,{\it lip}_{2}\right)-\left(6\,\xi_{1}-12\,
 + {\it ri}_{1}+6\,{\it lip}_{1}\right)\,\left(3\,{\it ri}_{2}-3\,
 + \xi_{2}\right)\right)\,\left(6\,{\it xip}_{3}-6\,\xi_{3}+18\,
 + {\it ri}_{3}-18\,{\it lip}_{3}\right)+\left(\left(6\,\xi_{1}-12\,
 + {\it ri}_{1}+6\,{\it lip}_{1}\right)\,\left(3\,{\it ri}_{3}-3\,
 + \xi_{3}\right)-\left(3\,{\it ri}_{1}-3\,\xi_{1}\right)\,\left(6\,
 + \xi_{3}-12\,{\it ri}_{3}+6\,{\it lip}_{3}\right)\right)\,\left(6\,
 + {\it xip}_{2}-6\,\xi_{2}+18\,{\it ri}_{2}-18\,{\it lip}_{2}\right)+
 + \left(\left(3\,{\it ri}_{2}-3\,\xi_{2}\right)\,\left(6\,\xi_{3}-12\,
 + {\it ri}_{3}+6\,{\it lip}_{3}\right)-\left(6\,\xi_{2}-12\,
 + {\it ri}_{2}+6\,{\it lip}_{2}\right)\,\left(3\,{\it ri}_{3}-3\,
 + \xi_{3}\right)\right)\,\left(6\,{\it xip}_{1}-6\,\xi_{1}+18\,
 + {\it ri}_{1}-18\,{\it lip}_{1}\right)}\over{\left(\left(3\,
 + {\it ri}_{2}-3\,\xi_{2}\right)\,\left(6\,\xi_{3}-12\,{\it ri}_{3}+6
 + \,{\it lip}_{3}\right)-\left(6\,\xi_{2}-12\,{\it ri}_{2}+6\,
 + {\it lip}_{2}\right)\,\left(3\,{\it ri}_{3}-3\,\xi_{3}\right)\right)
 + ^2+\left(\left(6\,\xi_{1}-12\,{\it ri}_{1}+6\,{\it lip}_{1}\right)\,
 + \left(3\,{\it ri}_{3}-3\,\xi_{3}\right)-\left(3\,{\it ri}_{1}-3\,
 + \xi_{1}\right)\,\left(6\,\xi_{3}-12\,{\it ri}_{3}+6\,{\it lip}_{3}
 + \right)\right)^2+\left(\left(3\,{\it ri}_{1}-3\,\xi_{1}\right)\,
 + \left(6\,\xi_{2}-12\,{\it ri}_{2}+6\,{\it lip}_{2}\right)-\left(6\,
 + \xi_{1}-12\,{\it ri}_{1}+6\,{\it lip}_{1}\right)\,\left(3\,
 + {\it ri}_{2}-3\,\xi_{2}\right)\right)^2}}={{\left(\left(3\,\xi_{1}-3
 + \,{\it li}_{1}\right)\,\left(6\,\xi_{2}+6\,{\it rim}_{2}-12\,
 + {\it li}_{2}\right)-\left(6\,\xi_{1}+6\,{\it rim}_{1}-12\,
 + {\it li}_{1}\right)\,\left(3\,\xi_{2}-3\,{\it li}_{2}\right)\right)
 + \,\left(-6\,{\it xim}_{3}+6\,\xi_{3}+18\,{\it rim}_{3}-18\,
 + {\it li}_{3}\right)+\left(\left(6\,\xi_{1}+6\,{\it rim}_{1}-12\,
 + {\it li}_{1}\right)\,\left(3\,\xi_{3}-3\,{\it li}_{3}\right)-\left(3
 + \,\xi_{1}-3\,{\it li}_{1}\right)\,\left(6\,\xi_{3}+6\,{\it rim}_{3}-
 + 12\,{\it li}_{3}\right)\right)\,\left(-6\,{\it xim}_{2}+6\,\xi_{2}+
 + 18\,{\it rim}_{2}-18\,{\it li}_{2}\right)+\left(\left(3\,\xi_{2}-3\,
 + {\it li}_{2}\right)\,\left(6\,\xi_{3}+6\,{\it rim}_{3}-12\,
 + {\it li}_{3}\right)-\left(6\,\xi_{2}+6\,{\it rim}_{2}-12\,
 + {\it li}_{2}\right)\,\left(3\,\xi_{3}-3\,{\it li}_{3}\right)\right)
 + \,\left(-6\,{\it xim}_{1}+6\,\xi_{1}+18\,{\it rim}_{1}-18\,
 + {\it li}_{1}\right)}\over{\left(\left(3\,\xi_{2}-3\,{\it li}_{2}
 + \right)\,\left(6\,\xi_{3}+6\,{\it rim}_{3}-12\,{\it li}_{3}\right)-
 + \left(6\,\xi_{2}+6\,{\it rim}_{2}-12\,{\it li}_{2}\right)\,\left(3\,
 + \xi_{3}-3\,{\it li}_{3}\right)\right)^2+\left(\left(6\,\xi_{1}+6\,
 + {\it rim}_{1}-12\,{\it li}_{1}\right)\,\left(3\,\xi_{3}-3\,
 + {\it li}_{3}\right)-\left(3\,\xi_{1}-3\,{\it li}_{1}\right)\,\left(6
 + \,\xi_{3}+6\,{\it rim}_{3}-12\,{\it li}_{3}\right)\right)^2+\left(
 + \left(3\,\xi_{1}-3\,{\it li}_{1}\right)\,\left(6\,\xi_{2}+6\,
 + {\it rim}_{2}-12\,{\it li}_{2}\right)-\left(6\,\xi_{1}+6\,
 + {\it rim}_{1}-12\,{\it li}_{1}\right)\,\left(3\,\xi_{2}-3\,
 + {\it li}_{2}\right)\right)^2}}$$
 +
 +Wie löst man so was?
 +
 +Ansatz: Gradientenabstieg
 +  * Man beginnt mit einer Lösung (z.B. jene, die das aktuelle Programm liefert). 
 +  * Man bring die obigen Gleichungen auf die Form "Term = 0".
 +  * Man leitet Term nach jeder Variablen ab (z.B. nummerisch)
 +  * Diese partiellen Ableitungen geben die Richtung an, in welche man die Variablen verändern muss, damit die Gleichung "besser" stimmt. In diese Richtung wird ein "kleiner" Schritt gemacht und wiederholt.