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 09:56] Ivo Blöchliger [Verschiebung] |
kurse:povray23:basicmoves [2023/08/14 10:15] (current) Ivo Blöchliger [Mehr als zwei Bewegungen] |
||
---|---|---|---|
Line 34: | Line 34: | ||
==== Rotation ==== | ==== Rotation ==== | ||
{{kurse: | {{kurse: | ||
+ | |||
+ | <WRAP info> | ||
+ | Wenn in der Zeit $t$ von 0 bis 1 eine volle Umdrehung gemacht werden soll, muss der Drehwinkel $\alpha$ von $0^\circ$ bis $360^\circ$ variieren. Wenn dies gleichmässig erfolgen soll erhält man folgende lineare Funktion für den Winkel: | ||
+ | $$ | ||
+ | \alpha(t) = 360^\circ \cdot t | ||
+ | $$ | ||
+ | </ | ||
<code povray> | <code povray> | ||
Line 54: | Line 61: | ||
==== Vertikaler Fall ==== | ==== Vertikaler Fall ==== | ||
{{kurse: | {{kurse: | ||
+ | |||
+ | <WRAP info> | ||
+ | Wir betrachten einen Wurf (oder Fall) der zur Zeit 0 am Boden nach oben startet und zur Zeit 1 wieder am Boden ankommt. Dabei soll die Höhe $h$ erreicht werden. | ||
+ | |||
+ | Gesucht ist damit eine quadratische Funktion mit | ||
+ | * Nullstellen 0 und 1 | ||
+ | * Scheitelpunkt $(0.5, h)$. (Der Scheitelpunkt liegt genau zwischen den Nullstellen). | ||
+ | |||
+ | Folgende Funktionen haben die Nullstellen 0 und 1: $f(x) = a \cdot x\cdot(1-x)$, | ||
+ | |||
+ | Wir möchten dass $f(0.5)=h$, was uns eine Gleichung für $a$ liefert: $a\cdot 0.25 = h$, also $a=4h$. | ||
+ | |||
+ | Die gesuchte $z$-Koordinate ist also: | ||
+ | $$ | ||
+ | z(t) = 4h\cdot t \cdot (1-t) | ||
+ | $$ | ||
+ | </ | ||
+ | <WRAP todo> | ||
+ | Überprüfen Sie durch Einsetzen, dass zu den Zeitpunkten $t \in \{0, | ||
+ | |||
+ | Skizzieren Sie den Funktionsgraphen für $h=1$. | ||
+ | </ | ||
<code povray> | <code povray> | ||
Line 72: | Line 101: | ||
==== Wurfparabel ==== | ==== Wurfparabel ==== | ||
- | Lineare Bewegung in $x/ | ||
- | |||
{{kurse: | {{kurse: | ||
+ | |||
+ | <WRAP info> | ||
+ | Eine lineare Bewegung in $x/ | ||
+ | $$ | ||
+ | |||
+ | $$ | ||
+ | </ | ||
<code povray> | <code povray> | ||
Line 98: | Line 132: | ||
{{kurse: | {{kurse: | ||
+ | <WRAP info> | ||
+ | Schwingungen können durch eine Sinus-Funktion beschrieben werden, die gestreckt und verschoben wird. Folgende Parameter bestimmen eine Schwingung: | ||
+ | * Amplitude $a$ (die Hälfte der Differenz des kleinsten und grössten Werts) | ||
+ | * Periode $p$ (Dauer einer Schwingung) | ||
+ | * Phase $\phi$ (Winkel zur Zeit Null) | ||
+ | * Mittelwert $m$ (Durchschnitt des kleinsten und grössten Werts) | ||
+ | Der Funktionsterm lautet (Winkelangaben in Radianten!) | ||
+ | $$ | ||
+ | f(t) = a \cdot \sin\left(\phi + t\cdot 2\pi \cdot p\right) + m | ||
+ | $$ | ||
+ | </ | ||
+ | |||
+ | <WRAP todo> | ||
+ | Bestimmen Sie obige Parameter für eine Schwingung, die in einer Zeiteinheit eine Schwingung zwischen den Werten 0 und 1 ausführt. Für die Phase kann $\phi=0$ gewählt werden. | ||
+ | </ | ||
<code povray> | <code povray> | ||
#declare start = < | #declare start = < | ||
Line 119: | Line 168: | ||
</ | </ | ||
- | ==== Drehpendel | + | ==== Pendelbewegung |
{{kurse: | {{kurse: | ||
Line 142: | 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 164: | 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 | ||
} | } | ||
+ | </ | ||
+ | ==== Mehr als zwei Bewegungen ==== | ||
+ | POV-Ray hat kein '' | ||
+ | |||
+ | Mit dem '' | ||
+ | |||
+ | <code povray> | ||
+ | torus {1, 0.3 | ||
+ | pigment {checker color rgb x, color rgb z} | ||
+ | finish { phong 0.7 reflection 0.1 } | ||
+ | rotate 90*x | ||
+ | translate x-y | ||
+ | |||
+ | #switch (clock) | ||
+ | #range (0, 0.2499) | ||
+ | #declare myclock = 4*clock; | ||
+ | rotate -180*x*myclock | ||
+ | # | ||
+ | #range (0.25, 0.4999) | ||
+ | #declare myclock = 4*(clock-0.25); | ||
+ | rotate -180*x | ||
+ | rotate -180*y*myclock | ||
+ | #break | ||
+ | #range (0.5, 0.7499) | ||
+ | #declare myclock = 4*(clock-0.5); | ||
+ | rotate -180*x | ||
+ | rotate -180*y | ||
+ | rotate 180*x*myclock | ||
+ | #break | ||
+ | #range (0.75, 1) | ||
+ | #declare myclock = 4*(clock-0.75); | ||
+ | rotate -180*x | ||
+ | rotate -180*y | ||
+ | rotate 180*x | ||
+ | rotate 180*y*myclock | ||
+ | #break | ||
+ | #end // ende vom switch | ||
+ | translate 0.3*z // Damit der Torus nicht im Boden liegt | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | {{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, | ||
+ | | ||
</ | </ | ||
+ | |