Beschreibungen und Beispiele zum Raytracer POV-Ray von Friedrich A. Lohmüller
English English English

Home
back to overview
- POV-Ray Tutorials

  - Analytische Geometrie
    mit POV-Ray
    - Inhaltsübersicht -
  - Insert Menu Zusatz
    & Download
 
  - Grundsätzliches
    zur Arbeitsweise

    Punkte & Linien
    - Punkte in 3D
    - Strecken, Geraden,
      Vektoren, Abstandspfeile
    - Flächen u. Ebenen
    - Ausgabe Resultate,
      Beschriftung
   > Schnittpunkte
    - Kreise

    Körper
    - Tetraeder
    - Parallelflach (Spat)
    - Runde Körper
    -
  - Tabellarischer
      Überblick über
      "analytical_g.inc"
  - Vektorrechnung
      mit POV-Ray
  - Rechts- u. linkshändige
      Koordinatensysteme
      und das Vektorprodukt

  - Beispiele aus der
  - Analytischen Geometrie
    - Seitenmitten-Parallelogramm
    - Spurpunkte einer Geraden
    - Berechnungen am Dreieck
    - Parallelogrammfläche
        und Vektorprodukt
    - Schatten einer Pyramide
    - Schnitt mit Ebene || zu yz
    - Winkel zw. Dreieck yz-Ebene
                                       

Analytische Geometrie mit POV-Ray

Schnittpunktsberechnungen    und Ausgabe der
Schnittpunktskoordinaten

Mit der "trace"-Funktion von POV-Ray kann man die Koordinaten des Schnittpunktes einer Geraden mit jedem anderen Objekt berechnen. Hierzu sollte man dieses Objekt mit "#declare" definieren. Man erhält den Schnittpunkt mit
trace ( Objekt, Startpunkt, Trace-Richtung );

Beispiel:
Schnittpunkt einer Geraden AB mit einer Ebene
Die Ebene wird hier durch ihren Normalenvektor und einen Startpunkt definiert.

// Punkte A und B der Geraden:
#declare A  = < 3.0, 1.0,-3.0>;
#declare B  = <-1.0, 3.0, 5.0>;

// Ebene
// Normalenvektor:
#declare N = < 1, 0, -1>;
// Startpunkt:
#declare P = < 0.0, 0.0, 0.0>;

#declare Plane_1 =
object{
 Plane_NoP(  N, P, <-3,0,-4>,<2.5,4,4> )
 pigment{ color rgbt< 0.75,0.65,0.5,0.4> }
 }// end of Plane_1

// Zeichnen der Ebene Plane_1:
 object{ Plane_1}

// point of intersection - Schnittpunkt
#declare Hit_the_Object =  trace ( Plane_1, A, B-A );

// Darstellung des Schnittpunkts:
sphere{ Hit_the_Object, Rp  texture{ T_Red } }
// Darstellung seiner relativen Lage:
object{ Show_Yxz( Hit_the_Object, Rl/2)
        pigment{ color Yellow }
      }

Zur Ausgabe seiner Koordinaten benutzt man das "text"-Objekt von POV-Ray:

text{ ttf "ARIAL.TTF"
  concat( "S = (",
           vstr(3, Hit_the_Object, "/", 0, 1),
          ")"
         ),0.1,0
  scale 0.40 rotate<20,-45,0>
  translate Hit_the_Object+< 0.4,0.0,0>
  pigment{ color Red }  no_shadow }

Normalenvektor am Schnittpunkt:
(Wird benötigt zur Berechnung des Schnittwinkels!)
Um die Koordinaten des Normalenvektors am Schnittpunkt zu erhalten muß man eine Variable definieren in der die seine Werte gespeichert werden sollen:
#declare Hit_Normal = <0,0,0>;
Anmerkung: Wenn die "trace"-Funktion von POV-Ray keinen Schnittpunkt findet dann bleibt der Normalenvektor (hier: Hit_Normal) der Null-Vektor <0,0,0>
Das Prüfen dieses Normalenvektors ist die einzig verläßliche Methode um zu Prüfen ob ein Schnitt stattgefunden hat oder nicht!
Hier benutzt man die erweiterte Version der "trace"-Funktion:
trace( Objekt, Startpunkt, Richtung, Normale);

Beispiel: Normalenvektor an einem Schnittpunkt
#declare Hit_the_Object =
   trace ( Plane_1, A, B-A, Hit_Normal );

// The point of intersection - Schnittpunkt
 sphere{ Hit_the_Object, Rp  pigment{ color Red } }

// The normal vector at the point of intersection
// Normalenvector am Schnittpunkt
object{ Vector( Hit_the_Object,
                Hit_the_Object + Hit_Normal, Rl)
        pigment{ color rgb<1,0,0.25>}
      }

Schnittpunkt von Gerade und Ebene.
Klicken Sie hier für die vollständige Beschreibung
dieser Szene für POV-Ray: ".txt"-Datei oder ".pov"-Datei


Schnittpunkt von Gerade und Ebene.
Klicken Sie hier für die vollständige Beschreibung
dieser Szene für POV-Ray: ".txt"-Datei oder ".pov"-Datei




Schnittpunkt von Gerade und Ebene.
Klicken Sie hier für die vollständige Beschreibung
dieser Szene für POV-Ray: ".txt"-Datei oder ".pov"-Datei

Schnittpunkte einer Geraden AB mit einer Kugel
Vereinfacht setzen wir hier voraus, daß die Gerade die Kugel sicher schneidet.
Wir definieren das Kugel-Objekt und zwei Normalen in den Schnittpunkten:
  // Kugel:
#declare M  = < -1, 2.0, 0.0>;
#declare Radius = 1.5 ;

// Kugel
#declare Sphere_1 =
sphere{ o, Radius
        translate M
        pigment{ color Green transmit 0.5}
      }

      // Zeichnen der Kugel
object{ Sphere_1}

// Vorbereiten der Normalenvektoren
#declare Hit_Normal = <0,0,0>;
#declare Hit_Normal2 = <0,0,0>;
Dann "tracen" wir die Gerade von zwei Richtungen gegen die Kugel um beide Schnittpunkte und beide Schnittnormalen mit der Kugel zu erhalten:
#declare Hit_the_Object =
   trace ( Sphere_1, A, B-A, Hit_Normal );
#declare Hit_the_Object2 =
   trace ( Sphere_1, B, A-B, Hit_Normal2);


Schnittpunkte von Gerade und Kugel.
Klicken Sie hier für die vollständige Beschreibung
dieser Szene für POV-Ray: ".txt"-Datei oder ".pov"-Datei

top

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