lehrkraefte:blc:math:vektoranalysis:povrayaufgaben

Differences

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

Link to this comparison view

Both sides previous revision Previous revision
lehrkraefte:blc:math:vektoranalysis:povrayaufgaben [2018/08/31 13:06] – [Aufgabe 441] Ivo Blöchligerlehrkraefte:blc:math:vektoranalysis:povrayaufgaben [2018/08/31 14:05] (current) – [Aufgabe 441] Ivo Blöchliger
Line 1: Line 1:
 +====== Programm "Installation" und Start ======
 +==== Installation ====
 +Dieser Vorgang muss nur ausgeführt werden, wenn im Laufwerk C: kein Ordner POV-Ray existiert.
 +  * Im Klassenlaufwerk finden Sie im Ordner Mathe die Datei **pvinst.bat**. Starten Sie diese. Dieser Vorgang muss nur einmal ausgeführt werden.
 +==== Programmstart ====
 +  * Im Laufwerk C:, im Ordner POV-Ray, starten Sie die Datei **pvstart.bat**.
 +  * Legen Sie eine neue POV-Ray Datei an und speichern Sie diese mit der Dateiendung .pov an einem geeigneten Ort. Für Animationen speichern Sie die Datei in einem separaten Ordner nur für diese Datei.
 +
 +
 +
 +====== POV-Ray Aufgaben ======
 +
 +Grundstruktur:
 +<code povray>
 +// Kamera
 +camera { 
 +      sky <0,0,1>          // Vektor, der festlegt, wo oben ist.
 +      right <-4/3,0,0>     // Bildverhältnis 4:3, plus Spiegelung für rechtsdrehendes System
 +      location <20,8,18>   // Position der Kamera
 +      look_at <0, 0, 1>    // Blickrichtung (erscheint im Bildmittelpunkt)
 +      angle 30             // Öffnungswinkel der Kamera
 +}
 +
 +// Lichtquellen
 +light_source { 
 + <12,-2,12>              // Position des Lichts
 + color rgb <1,1,1>     // Farbe des Lichts, als rot-grün-blau Vektor (Komponenten 0 bis 1)
 +}
 +light_source { 
 + <13,10,13>              // Position des Lichts
 + color rgb <1,1,1>     // Farbe des Lichts, als rot-grün-blau Vektor (Komponenten 0 bis 1)
 +}
 +// Boden (xy-Ebene, kariert mit Quadraten von Seitenlänge 1)
 +plane { 
 +  z,0        // Ebene, senkrecht zu z=<0,0,1>, mit Abstand 0 zum Ursprung
 +  pigment {  // Schachbrett
 +    checker color rgb <1,1,1>, color rgb <0.2,0.2,0.2>
 +  }
 +  finish { reflection 0.4 }
 +} // Ende Boden
 +
 +</code>
 +
 +===== Aufgabe 441 =====
 +Erst werden die Parameter der Aufgabe festgelegt, dann eine Person definiert (kann noch beliebig verkompliziert werden)
 +und schliesslich die beiden Personen dargestellt.
 +
 +Um die Animation zu rendern, muss in POV-Ray noch die Option "+KFF20" eingetragen werden, damit z.B. 20 Bilder erzeugt werden.
 +<code povray>
 +// TODO
 +// HIER FEHLT NOCH KAMERA, LICHT UND BODEN
 +
 +
 +#declare oa=<0,4,0>;   // Startposition A
 +#declare va=<1,0,0>;   // Geschwindigkeitsvektor A
 +
 +#declare ob=<3,0,0>;   // Startposition B
 +#declare vb=<0,1,0>;   // Geschwindigkeitsvektor B
 +
 +#declare zeit=clock*6; // Total 6 Sekunden simulieren
 +
 +#declare person=union {  // Person, zentriert auf <0,0,0>, Blickrichtung in x-Richtung
 +  box { <-0.15,-0.3,0>, <0.15,0.3,1.7> }
 +} // Ende union Person
 +
 +// Person A
 +object { person
 +  // TODO
 +  // translate HIER DIE POSITION AUS DER zeit BERECHNEN
 +  pigment { color rgb <1,0,0> }
 +}  // Ende Person A
 +object { person
 +  rotate 90*z  // damit die Person in y-Richtung schaut.
 +  // TODO
 +  // translate HIER DIE POSITION AUS DER zeit BERECHNEN
 +  pigment { color rgb <0,1,0> }
 +}  // Ende Person A
 +</code>
 +Wer möchte, kann sich überlegen, wie man noch Beine animieren könnte. Dazu eignet sich die Modulo-Funktion:
 +<code povray>
 +#declare beinzeit = mod(zeit,1.0);   // Liefert die Nachkommastellen
 +// TODO
 +// AUS beinzeit DIE POSITION DER FUESSE BERECHNEN
 +</code>
 +
 +<hidden Lösungsvorschlag>
 +<code povray>
 +// Kamera
 +camera { 
 +      sky <0,0,1>          // Vektor, der festlegt, wo oben ist.
 +      right <-4/3,0,0>     // Bildverhältnis 4:3, plus Spiegelung für rechtsdrehendes System
 +      location <20,8,18>   // Position der Kamera
 +      look_at <5, 5, 1>    // Blickrichtung (erscheint im Bildmittelpunkt)
 +      angle 30             // Öffnungswinkel der Kamera
 +}
 + 
 +// Lichtquellen
 +light_source { 
 + <12,-2,12>              // Position des Lichts
 + color rgb <1,1,1>     // Farbe des Lichts, als rot-grün-blau Vektor (Komponenten 0 bis 1)
 +}
 +light_source { 
 + <13,10,13>              // Position des Lichts
 + color rgb <1,1,1>     // Farbe des Lichts, als rot-grün-blau Vektor (Komponenten 0 bis 1)
 +}
 +// Boden (xy-Ebene, kariert mit Quadraten von Seitenlänge 1)
 +plane { 
 +  z,0        // Ebene, senkrecht zu z=<0,0,1>, mit Abstand 0 zum Ursprung
 +  pigment {  // Schachbrett
 +    checker color rgb <1,1,1>, color rgb <0.2,0.2,0.2>
 +  }
 +  finish { reflection 0.4 }
 +} // Ende Boden
 +
 +
 +#declare oa=<0,4,0>;   // Startposition A
 +#declare va=<1,0,0>;   // Geschwindigkeitsvektor A
 + 
 +#declare ob=<3,0,0>;   // Startposition B
 +#declare vb=<0,1,0>;   // Geschwindigkeitsvektor B
 + 
 +#declare zeit=clock*6; // Total 6 Sekunden simulieren
 + 
 +#declare person=union {  // Person, zentriert auf <0,0,0>, Blickrichtung in x-Richtung
 +  box { <-0.15,-0.3,0>, <0.15,0.3,1.7> }
 +} // Ende union Person
 +
 +
 +#declare halbeSeite=2;  // ACHTUNG Gross/Kleinschreibung!
 +#declare abstand=1;
 +
 +#declare truppe = union {
 +    // Einrücken mit TAB  (oberhalb CapsLock=)
 +    #declare posx=-halbeSeite;  // x-Position einer Person in der Truppe
 +    #while (posx<=halbeSeite)   // Wieder holen, von -halbeSeite bis +halbeSeite
 +        #declare posy=-halbeSeite;     // Dito für posy
 +        #while (posy <= halbeSeite)
 +            
 +            object { person            // Person platzieren
 +                translate abstand*<posx,posy,0>
 +            }
 +                    
 +            #declare posy=posy+1;
 +        #end // while posy
 +        #declare posx=posx+1;
 +    #end // while posx
 +} // union
 +
 +
 + 
 +// Person A
 +object { truppe
 +  // TODO
 +  translate oa+zeit*va    // Parameterdarstellung der Geraden a
 +  pigment { color rgb <1,0,0> }
 +}  // Ende Person A
 +           
 +           
 +// Person B
 +object { truppe
 +  rotate 90*z  // damit die Person in y-Richtung schaut.
 +  // TODO
 +  translate ob+zeit*vb  // Parameterdarstellung der Geraden b
 +  pigment { color rgb <0,1,0> }
 +}  // Ende Person A
 +
 +</code>
 +</hidden>
 +
 +===== Video-Encoding mit ffmpeg =====
 +<code>
 +C:\ffmpeg-20180831-3ad0e67-win64-static\bin\ffmpeg.exe -i .\aufgabe441og%02d.png movie.mp4
 +</code>