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

Tabellarischer Überblick
über die wichtigsten Kommandos zur schnellen Orientierung

Definition der Punkte:
Bereits definiert sind:
  o = <0,0,0>,(Usprung)
  x = <1,0,0>, y = <0,1,0>, z = <0,0,1>
Platzhalter für eigene Punkte und Vektoren definieren, z.B:
  P1 = < 2, 1.5, -3>;
  V1 = < -3, 1.25, 1>;
In der Beispiel-Datei "a_geo_00.pov" ist vordefiniert:
Rp = 0.105 = Radius der Punkte,
Rl = 0.055 = Radius der Linien.
und die nebenstehenden Grundfarben.
Darstellung von Objekten:
(Die meisten hier verwendeten Makros sind   iN meiner Include-Datei analytical_g.inc   definiert.)

Alternativ: downloaden Sie analytical_g.txt und speichern sie die Datei unter dem Namen "analytical_g.inc"
Texturen des Schablonentextes "a_geo_00.pov"
oder Schablonentextes "a_geo_00.txt"

Punkt P1: .......................   sphere{ P1, Rp pigment{ color Red } }
 
Eindeutige Positionsmarkierung:
  1) Wire_box-Methode (Drahtgitter-Quader):  object{ Wire_Box( o, P,Rl/2,0) pigment{ color Yellow }},
  2) Unterstürzungszylinder in y-Richtung:     object{ Show_Y( P, Rl/2) pigment{ color Yellow } }.

Strecke P1P2: ..............   cylinder{ P1, P2, Rl pigment{ color Green}}
Gerade P1P2: ................  cylinder{ P1–10*(P2-P1), P2+10*(P2-P1), Rl pigment{ color Green}}
Vektor P1P2: ..................  object{ Vector (P1, P2, Rl) pigment{ color Green}}
Distanz-Marker P1P2:   object{ Distance_Marker(P1, P2, Rl) pigment{ color Green}}

Dreieck P1P2P3: ..............   triangle { P1, P2, P3 pigment{ color Yellow transmit 0.5 }
  Normale auf Dreieck P1P2P3: .........   object{ Triangle_Normal (P1, P2, P3) pigment{ color Yellow }
  Schwerpunkt des Dreiecks P1P2P3:   object{ Triangle_Mass_Center (P1, P2, P3) pigment{ color Yellow }
  Fläche des Dreieck P1P2P3: ...........   Triangle_Area ( P1, P2, P3 )
  Umfang des Dreieck P1P2P3: .........   Triangle_Circum ( P1, P2, P3 )
Ebene
  in Parameterform: .....   object{ Plane_Dir( Start, Dir1, Dir2, Start, End ) pigment{ color Green}}
  in Normalenform, N=<A,B,C>, D: .....    object{ Plane_Nor( Normale, D, Start, End) pigment{ color Green}}
  Normalenform, mit N durch P: ...   object{ Plane_NoP( Normale, P, Start, End) pigment{ color Green}}

Schnittpunkt Gerade - Ebene
  Gerade durch Punkt und Richtung #declare P = <x1,x2,x3> #declare M = <m1,m2,m3>
  Ebene als Objekt deklariert: #declare Ebene = ...; s.o.
  #declare Schnittpunkt = trace ( Ebene, A, M )
Mit Normalenvektor im Schnittpunkt - Bezeichnung vordeklariert durch: #declare Normale = <0,0,0>
  #declare Schnittpunkt = trace ( Ebene, A, M, Normale)

Kreis (M,r) um Achse:
  Kreislinie: ...............   object{ Circle_Line ( Mitte, Radius, Rl, Achse) pigment{ color Yellow }}
  Kreisfläche .............   object{ Circle_Disc ( Mitte, Radius, Achse) pigment{ color Yellow transmit 0.5 }}
Umkreis um Dreieck P1P2P3:
  Kreislinie: ...............   object{ Circle_Line_out( P1, P2, P3, Rl) pigment{ color Yellow }}
  Kreisfläche .............   object{ Circle_Disc_out( P1, P2, P3 ) pigment{ color Yellow transmit 0.5 }}
  Umkreis-Mittelpunkt.   object{ Triangle_M_out( P1, P2, P3 ) pigment{ color Green }}
  Umkreisradius .........   Triangle_R_out( P1, P2, P3 )
Inkreis um Dreieck P1P2P3:
  Kreislinie: ...............   object{ Circle_Line_in ( P1, P2, P3, Rl) pigment{ color Yellow }}
  Kreisfläche .............   object{ Circle_Disc_in ( P1, P2, P3 ) pigment{ color Yellow transmit 0.5 }}
  Inkreis-Mittelpunkt ..   object{ Triangle_M_in ( P1, P2, P3 ) pigment{ color Green }}
  Inkreisradius ...........   Triangle_R_in ( P1, P2, P3 )

Tetraeder
  mit den Kantenvektoren V1,V2,V3: object{ Tetrahedron_by_Edges ( V1,V2,V3, Rl,Rp, Filled) pigment{ color Green transmit 0.5}}
  mit den Eckpunkten P1P2P3P4: .... object{ Tetrahedron_by_Corners ( P0,P1,P2,P3, Rl,Rp, Filled) pigment{ color Green transmit 0.5}}

Parallelflach, Spat
  mit den Kantenvektoren V1,V2,V3: object{ Parallelepiped_by_Edges ( V1,V2,V3, Rl,Rp, Filled) pigment{ color Green transmit 0.5}}
  mit den Eckpunkten P1P2P3P4: .... object{ Parallelepiped_by_Corners ( P0,P1,P2,P3, Rl,Rp, Filled) pigment{ color Green transmit 0.5}}

Kugel um Mittelpunkt M mit Radius R: ...........   sphere { M, R   pigment{ color White }
Ellipsoid, Mittelpunkt M, Radien Rx,Ry,Rz: ..   sphere { M, R scale   pigment{ color Green transmit 0.5 }
Zylinder, Endmittelpunkte M1 und M2
und Radius R:
...................................................   cylinder { M1,M1, R   pigment{ color Green transmit 0.5 }
Kegel mit den Basismittelpunkt M1,
Basisradius R1 und Spitze M2:
.........................   cone { M1,R1, M2, 0   pigment{ color Green transmit 0.5 }
Kegelstumpf, Endmittelpunkte M1, M2
und Radien R1 und R2:
.....................................   cone { M1,R1, M2, R2   pigment{ color Green transmit 0.5 }

Textobjekt zur Bezeichnung von Objekten:
Bezeichnung "P":
text { ttf "ARIAL.TTF", "P",0.1,0
       scale 0.5 rotate<20,-45,0>
       translate P + <-0.2,0.3,0>
       pigment{ color Red } no_shadow} 
Bezeichnung "|PQ|"
+ Wert:
text{ ttf "ARIAL.TTF"
      concat( "|PQ| = " , str(vlength( Q-P),3,4)
            ), 0.1, 0
      scale 0.35 rotate<20,-45,0>
      translate P+<0.4,0.3,0>
      pigment{ color rgb<1,0,0.25> }  no_shadow } 
Bezeichnung "N"
+ Vektor:
text{ ttf "ARIAL.TTF"
      concat( "M(PQ) = (" , vstr(3,(P+Q)/2,"/",0,1) , ")"
            ), 0.1, 0
      scale 0.35 rotate<20,-45,0>
      translate (P + Q)/2 + <0.4,0.3,0>
      pigment{ color Violet }  no_shadow }

top

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