Differences
This shows you the differences between two versions of the page.
| Both sides previous revision Previous revision Next revision | Previous revision | ||
| kurse:povray23:hilfenfuerprojekte [2023/08/22 06:32] – [Eigene mathematische Funktionen] Ivo Blöchliger | kurse:povray23:hilfenfuerprojekte [2023/08/22 15:24] (current) – [Hohle Röhre] Ivo Blöchliger | ||
|---|---|---|---|
| Line 1: | Line 1: | ||
| + | ====== Generelle Hilfen ====== | ||
| + | ===== Anderer Bereich für die Zeit ===== | ||
| + | Die '' | ||
| + | <code povray> | ||
| + | // So läuft die Variable myclock von 0 bis 4 | ||
| + | #declare myclock=4*clock; | ||
| + | </ | ||
| + | ===== Eigene mathematische Funktionen ===== | ||
| + | Folgende Funktion gliedert sich in zwei Teile. Ich habe es nicht hingekriegt, | ||
| + | |||
| + | |||
| + | <code povray> | ||
| + | // Für bedingte Funktionen | ||
| + | #declare myif=function(bedingung, | ||
| + | bedingung*wennwahr+(1-bedingung)*wennfalsch | ||
| + | } | ||
| + | |||
| + | // Folgende Funktion ist immer Null zwischen 0 und 0.7, danach steigt die Funktion linear durch den Punkt $(1,1)$. | ||
| + | #declare durchsichtig=function(zeit) { | ||
| + | myif(zeit< | ||
| + | } | ||
| + | |||
| + | // Benutzung der Funktion | ||
| + | object { | ||
| + | | ||
| + | | ||
| + | } | ||
| + | </ | ||
| + | |||
| + | ===== Test der Animation in einem einzigen Bild ===== | ||
| + | Anstatt 20 (oder mehr) Bilder zu rendern, kann mit einem Trick auch ein einziges Bild mit allen Schritten gerendert werden. Der eigene Animationscode muss aber in eine Schleife eingepackt werden und es muss immer mit einer eigenen Zeitvariablen (z.B. myclock) gearbeitet werden. | ||
| + | <code povray> | ||
| + | // Kamera | ||
| + | // Licht | ||
| + | // Eigene zeitunabhängige Variablendefinitionen | ||
| + | |||
| + | #declare myclock=clock; | ||
| + | |||
| + | #declare numFrames=20; | ||
| + | #declare frame=0; | ||
| + | #while (frame< | ||
| + | #if (numFrames> | ||
| + | #declare myclock=frame/ | ||
| + | #end // if | ||
| + | | ||
| + | // | ||
| + | // Hier der Animationscode, | ||
| + | // | ||
| + | |||
| + | #declare frame=frame+1; | ||
| + | #end // while | ||
| + | |||
| + | </ | ||
| + | |||
| + | ===== Kopien von Objekten aber mit unterschiedlicher Zeit ===== | ||
| + | Man kann Macros definieren, die von Parmetern abhängen, z.B. wie folgt: | ||
| + | <code povray> | ||
| + | #include " | ||
| + | |||
| + | #declare meinDing=union{ | ||
| + | // Grundkörper | ||
| + | } | ||
| + | #marcro meinCoolesDing(orientierung, | ||
| + | object { | ||
| + | meinDing | ||
| + | rotate 360*zeit*z | ||
| + | Reorient_Trans(z, | ||
| + | } | ||
| + | #end | ||
| + | |||
| + | // Benutzung des Macros | ||
| + | object { | ||
| + | | ||
| + | | ||
| + | } | ||
| + | object { | ||
| + | | ||
| + | | ||
| + | } | ||
| + | // etc... | ||
| + | </ | ||
| + | Hinweis: Die Vektoren ''< | ||
| + | |||
| + | ===== Tangente an eine Wurfparabel ===== | ||
| + | Wird eine Wurfparabel in folgender Form geschrieben (dazu sind wohl Umformungen nötig): | ||
| + | \[ | ||
| + | \vec{OP}(t) = \vec p_0 + t \cdot \vec v_0 + t^2 \cdot \vec a, | ||
| + | \] | ||
| + | dann ist der Geschwindigkeitsvektor der folgende: | ||
| + | \[ | ||
| + | \vec v(T) = \vec v_0 + 2\cdot t \cdot \vec a | ||
| + | \] | ||
| + | |||
| + | Mit dieser Tangente kann dann z.B. ein Zylinder ausgrichtet werden. | ||
| + | |||
| + | ===== Hohle Röhre ===== | ||
| + | <code povray> | ||
| + | difference { | ||
| + | | ||
| + | | ||
| + | } | ||
| + | </ | ||