Beschreibungen und Beispiele zum Raytracer POV-Ray von Friedrich A. Lohmüller
            Geometrische Körper in POV-Ray
English English English
Italiano Italiano
Français français

Home
- POV-Ray Tutorial
 
 Geometrische Körper
   Inhaltsübersicht
Grundformen
  - sphere
  - cylinder
  - cone
  - torus
  - box
  - prism
  > plane
  - sor
  - lathe
  - superellipsoid
  - ovus

Körper mit Makros + CSG
Körper in "shapes3.inc"
Andere Körper als Makros
3D-Text-Objekte
Andere Formen
Non CSG Körper
height_field + HF macros
Isosurfaces
                                       
Sample plane

plane = Ebene,
(eigentlich: Halbraum)

plane = Ebene
(eigentlich: Halbraum)

allgemeiner Syntax:
plane{ < 0,1,0 >,0
       rotate<0,0,0>
       translate<0,0,0>
       texture{ ... }
       }// ----------
Dabei beschreibt "< 0,1,0 >" den Normalenvektor der "Ebene" und die darauffolgende Zahl den Abstand der "Ebene" vom Koordinaten-Mittelpunkt an
- aber Vorsicht:
Der Abstand wird in Richtung des Normalenvektors berechnet (Vorzeichen beachten!) und nur bei normierten Normalenvektoren (d.h. Normalenvektoren der Länge 1) wird der Abstand in den jeweiligen Einheiten gemessen!

Will man eine andere Lage der Ebene erreichen, so empfiehlt es sich die Ebene mittels "rotate<  ,   ,   >" und "translate< , , >" in die gewünschte Position zu drehen und zu schieben.

 Die Normalenform einer Ebene:
normal form of a plane

Der Form "plane{<a,b,c>,d ... }" entspricht in der analytischen Geometrie die folgende wohlbekannte Ebenengleichung in Normalenform:
normal form of a plane
Beschrieben werden dadurch aber anders, als in der analytischen Geometrie, nicht nur die Punkte auf der Ebene, sondern auch alle Punkte, die auf derjenigen Seite hinter der Ebene liegen, von welcher der Normalenvektor wegzeigt. Es wird also der gesamte Halbraum hinter der Ebene dadurch bezeichnet, wobei der Normalenvektor in den Außenraum zeigt!
Der Grund dafür liegt darin: Ob ein Punkt genau auf der Ebene liegt, läßt sich für einen Computer aufgrund der unvermeidlichen Rundungsfehler meist nicht sicher feststellen - daß ein Punkt sicher hinter einer Ebene liegt, dies ist da schon leichter zu entscheiden!
Dies erlaubt es nun mit diesen Objekten und den booleschen Operationen (CSG) neue Körper zu modellieren - beispielsweise wurden die reguläen Körper für Kristallformen, wie "Tetrahedron", "Dodecahedron", "Icosahedron" etc., welche in "shapes2.inc" definiert sind, auf diese Weise konstruiert.
Die "Ebene" plane{<0,1,0>,0 ...} bezeichnet also nicht etwa nur die xz-Ebene, sondern den gesamten (relativ zur Richtung des Normalenvektors) hinter ihr liegenden Halbraum. Schrägliegende Ebenen mit einem ungeradzahligem Abstand vom Ursprung sollten aus Grundebenen modelliert werden. Da ein Normalenvektor für eine Ebene, welche um z.B. 25° gegen eine die xz-Koordinatenebene geneigt ist nur schwer zu berechnen ist, sollte man hierzu nur einfache Grundebenen, wie z.B. die xz-Ebene verwenden, und diese durch "rotate" und evtl. "translate" in ihre genaue Lage bringen.

Beispiel 1:
Die Ebene
plane{ <0.25,0.75,0>,
       sqrt(1*1+3*3)
     } //-----------------
läßt sich einfacher beschreiben durch:
plane{ <1,3,0>,0
       translate<1,3,0>
     } //-----------------
plane 1
Beispiel 2:
Die Ebene
plane{ <-1,-1,0>,-sqrt(18)
     } //-----------------
ist z.B. identisch mit
plane{ <2,2,0>,3*sqrt(2)
      inverse
     } //-----------------
läßt sich einfacher beschreiben durch:

plane{ <-1,0,0>, 0
       rotate< 0, 0, -45>
       translate<3,3,0>
     } //-----------------
plane 1

© Friedrich A. Lohmüller, 2013
www.f-lohmueller.de
  top