kurse:povray23:basicmoves

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:povray23:basicmoves [2023/07/03 11:34]
Ivo Blöchliger [Mehr als zwei Bewegungen]
kurse:povray23:basicmoves [2023/08/14 10:15] (current)
Ivo Blöchliger [Mehr als zwei Bewegungen]
Line 168: Line 168:
 </code> </code>
  
-==== Drehpendel ====+==== Pendelbewegung ====
 {{kurse:povray23:schwingung-rotation.gif}} {{kurse:povray23:schwingung-rotation.gif}}
  
Line 191: Line 191:
  
 ===== Kombination von Bewegungen ===== ===== Kombination von Bewegungen =====
-Idee: Wir teilen das Zeitintervall in Unterintervalle auf und berechnen einen neue Zeit von 0-1 in diesem Intervall:+Idee: Wir teilen das Zeitintervall in Unterintervalle auf und berechnen jeweils eine neue Zeit von 0-1 in diesem Unterintervall:
  
 {{kurse:povray23:stueckweise.gif}} {{kurse:povray23:stueckweise.gif}}
Line 213: Line 213:
  #declare myclock = (clock-0.5)*2; // Wieder Werte von 0 bis 1  #declare myclock = (clock-0.5)*2; // Wieder Werte von 0 bis 1
  translate (4*myclock-2)*y    // Linear in y-Richtung  translate (4*myclock-2)*y    // Linear in y-Richtung
- translate 4*3*(1-myclock)*myclock*z   // Quadratisch in z-Richtung (bis auf Höhe 2)+ translate 4*3*(1-myclock)*myclock*z   // Quadratisch in z-Richtung (bis auf Höhe 3)
  #end  #end
 } }
Line 269: Line 269:
 #declare myclock = mod(4*clock, 1)   // Rest der Ganzzahldivision von 4*clock geteilt durch 1 #declare myclock = mod(4*clock, 1)   // Rest der Ganzzahldivision von 4*clock geteilt durch 1
 </code> </code>
 +Die vier Definitionen in den ''#range'' Abschnitten können so gelöscht werden.
  
 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). 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).
Line 274: Line 275:
  
 Gehen Sie dazu wie folgt vor: Gehen Sie dazu wie folgt vor:
-  * Zeichnen Sie die Funktion $f(t) = t$, was dem linearen Drehwinkel entspricht. +  * Skizzieren Sie auf Papier die Funktion $f(t) = t$, was dem linearen Drehwinkel entspricht. 
-  * Skizzieren Sie 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 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.   * 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)$.   * Unsere gesuchte Funktion ist also $g(t) = f(t)+d(t) = t+d(t)$.
Line 288: Line 289:
  
 {{kurse:povray23:vierstuecke-better.gif}} {{kurse:povray23:vierstuecke-better.gif}}
 +
 +=== 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}
 +   0^\circ & \text{wenn }t<0.25 \\
 +   180^\circ & \text{wenn }t>0.5 \\
 +   180^\circ \cdot (t-0.25)*4 & \text{sonst}
 +   \end{array} \right.
 +$$
 +
 +POV-Ray bietet eine Funktion ''clip(v,min,max)'', die ''v'' liefert, wenn ''v'' zwischen den Werten ''min'' und ''max''. Wenn ''v'' kleiner als ''min'' ist, liefert die Funktion den Wert ''min'', wenn ''v'' grösser als ''max'' ist, liefert die Funktion den Wert ''max''.
 +Damit kann obiger Code gänzlich ohne ''if'' geschrieben werden:
 +
 +<code povray>
 +// Einfachere Formeln, wenn clock gleich schon mit 4 multipliziert wird
 +#declare myclock=4*clock;
 +//
 +// ... 
 +// 
 +
 +    rotate clip(myclock,   0, 1)*-180*x   // Erste Rotation (Startet sofort, stoppt nach myclock=1)
 +    rotate clip(myclock-1, 0, 1)*-180*y   // Zweite Rotation (Startet erst bei myclock=1, stoppt nach myclock=2)
 +    rotate clip(myclock-2, 0, 1)*180*x    // Dritte Rotation
 +    rotate clip(myclock-3, 0, 1)*180*y    // Vierte Rotation
 +    
 +</code>
 +    
  • kurse/povray23/basicmoves.1688376853.txt.gz
  • Last modified: 2023/07/03 11:34
  • by Ivo Blöchliger