Differences
This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision | ||
kurse:povray23:basicmoves [2023/07/03 10:43] Ivo Blöchliger [Kombination von Bewegungen] |
kurse:povray23:basicmoves [2023/08/14 10:15] (current) Ivo Blöchliger [Mehr als zwei Bewegungen] |
||
---|---|---|---|
Line 168: | Line 168: | ||
</ | </ | ||
- | ==== Drehpendel | + | ==== Pendelbewegung |
{{kurse: | {{kurse: | ||
Line 191: | Line 191: | ||
===== Kombination von Bewegungen ===== | ===== Kombination von Bewegungen ===== | ||
- | Idee: Wir teilen das Zeitintervall in Unterintervalle auf und berechnen | + | Idee: Wir teilen das Zeitintervall in Unterintervalle auf und berechnen |
{{kurse: | {{kurse: | ||
Line 213: | Line 213: | ||
#declare myclock = (clock-0.5)*2; | #declare myclock = (clock-0.5)*2; | ||
translate (4*myclock-2)*y | translate (4*myclock-2)*y | ||
- | translate 4*3*(1-myclock)*myclock*z | + | translate 4*3*(1-myclock)*myclock*z |
#end | #end | ||
} | } | ||
Line 219: | Line 219: | ||
==== Mehr als zwei Bewegungen ==== | ==== Mehr als zwei Bewegungen ==== | ||
- | POV-Ray hat kein '' | + | POV-Ray hat kein '' |
+ | |||
+ | Mit dem '' | ||
<code povray> | <code povray> | ||
torus {1, 0.3 | torus {1, 0.3 | ||
Line 228: | Line 231: | ||
#switch (clock) | #switch (clock) | ||
- | #range (0, 0.25) | + | #range (0, 0.2499) |
#declare myclock = 4*clock; | #declare myclock = 4*clock; | ||
rotate -180*x*myclock | rotate -180*x*myclock | ||
# | # | ||
- | #range (0.25, 0.5) | + | #range (0.25, 0.4999) |
#declare myclock = 4*(clock-0.25); | #declare myclock = 4*(clock-0.25); | ||
rotate -180*x | rotate -180*x | ||
rotate -180*y*myclock | rotate -180*y*myclock | ||
#break | #break | ||
- | #range (0.5, 0.75) | + | #range (0.5, 0.7499) |
#declare myclock = 4*(clock-0.5); | #declare myclock = 4*(clock-0.5); | ||
rotate -180*x | rotate -180*x | ||
Line 253: | Line 256: | ||
translate 0.3*z // Damit der Torus nicht im Boden liegt | translate 0.3*z // Damit der Torus nicht im Boden liegt | ||
} | } | ||
- | </ | + | </ |
{{kurse: | {{kurse: | ||
+ | <WRAP todo> | ||
+ | Anstatt '' | ||
+ | <code povray> | ||
+ | #declare myclock = 4*clock - floor(4*clock) | ||
+ | </ | ||
+ | oder etwas eleganter | ||
+ | <code povray> | ||
+ | #declare myclock = mod(4*clock, | ||
+ | </ | ||
+ | Die vier Definitionen in den ''# | ||
+ | Die Animation kann noch ansprechender gemacht werden, wenn die Drehung nicht gleichmässig ist, sondern am Anfang und Ende schneller und dazwischen langsamer (als ob der Torus fallen würde). | ||
+ | Das kann entweder physikalisch korrekt gerechnet werden (was nicht ganz ohne ist) oder angenähert werden. | ||
+ | |||
+ | Gehen Sie dazu wie folgt vor: | ||
+ | * Skizzieren Sie auf Papier die Funktion $f(t) = t$, was dem linearen Drehwinkel entspricht. | ||
+ | * Skizzieren Sie ins gleiche Koordinatensystem die gewünschte Funktion $g(t)$, die am Anfang bei $g(t)=0$ steiler ansteigt, bei $t=0.5$ ebenfalls den Wert 0.5 liefert (aber weniger steil ist) und bei $g(1)=1$ ebenfalls steiler ist. | ||
+ | * Skizzieren Sie die Differenz $d(t) = g(t)-f(t)$ und bestimmen Sie eine Funktion, die in etwa die Form von $d(t)$ hat. | ||
+ | * Unsere gesuchte Funktion ist also $g(t) = f(t)+d(t) = t+d(t)$. | ||
+ | * Fügen Sie dann in POV-Ray eine Zeile nach der Definition der Variablen '' | ||
+ | <code povray> | ||
+ | #declare myclock = myclock + //hier Ihre Funktion d einfügen | ||
+ | </ | ||
+ | * Jetzt sollte die Bewegung natürlicher wirken. | ||
+ | </ | ||
+ | |||
+ | Mit «natürlicherer» Bewegung (aber immer noch physikalisch inkorrekt): | ||
+ | |||
+ | {{kurse: | ||
+ | |||
+ | === Noch eleganterer Code für diesen Fall === | ||
+ | Betrachten wir die Funktion für den Drehwinkel der z.B. zweiten Drehung, kann die Funktion wie folgt beschrieben werden: | ||
+ | |||
+ | $$ | ||
+ | f(t) = \left\{\begin{array}{ll} | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | $$ | ||
+ | |||
+ | POV-Ray bietet eine Funktion '' | ||
+ | Damit kann obiger Code gänzlich ohne '' | ||
+ | |||
+ | <code povray> | ||
+ | // Einfachere Formeln, wenn clock gleich schon mit 4 multipliziert wird | ||
+ | #declare myclock=4*clock; | ||
+ | // | ||
+ | // ... | ||
+ | // | ||
+ | |||
+ | rotate clip(myclock, | ||
+ | rotate clip(myclock-1, | ||
+ | rotate clip(myclock-2, | ||
+ | rotate clip(myclock-3, | ||
+ | | ||
+ | </ | ||
+ | |