lehrkraefte:blc:math:vektoranalysis:povrayaufgaben

Programm "Installation" und Start

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.
  • 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:

// 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

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.

// 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

Wer möchte, kann sich überlegen, wie man noch Beine animieren könnte. Dazu eignet sich die Modulo-Funktion:

#declare beinzeit = mod(zeit,1.0);   // Liefert die Nachkommastellen
// TODO
// AUS beinzeit DIE POSITION DER FUESSE BERECHNEN

Lösungsvorschlag

Lösungsvorschlag

// 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
C:\ffmpeg-20180831-3ad0e67-win64-static\bin\ffmpeg.exe -i .\aufgabe441og%02d.png movie.mp4
  • lehrkraefte/blc/math/vektoranalysis/povrayaufgaben.txt
  • Last modified: 2018/08/31 16:05
  • by Ivo Blöchliger