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

Home
- POV-Ray Tutorial
  Geometrische
  Transformationen
   - Inhalt

    Elementare
    Transformationen
    - "translate<  ... > "
    - "rotate<  ... > "
    - "scale<  ... > "
    - Spiegelung

    Weitere
    Transformationen
    - "matrix<  ... >"
    - Scherung
    - transforms.inc

    - "transform {  ...  }"
       und "inverse"

    Vektoren und
    Transformationen
    - vrotate
    - vaxis_rotate
    - vtransform
    - vinv_transform
    - vturbulence
    - vnormalize
    - vcross
    - vdot()
    - vlength()
    - VAngle(), VAngleD()
    - VProject_Axis

    Insert Menu Zusatz
    & Download
 
                                           
Vektoren und Transformationen
Vektortransformationen und andere vektorbezogene Makros in POV-Ray:

vrotate( V, <Rotate.x, Rotate.y, Rotate.z>)
Rotation eines Vektors V um den Ursprung <0,0,0>
mit dem Rotationsvektor <Rotate_X, Rotate_Y, Rotate_Z>.
vrotate( < 2.5, 1, 0>,
          < 0, 90, 0> ) 
vrotate example

vaxis_rotate( V1, V2, A)
Rotatiert V1 um V2 um A Grad
Rotation eines Vektors um einen anderen Vektor als Drehachse.
vaxis_rotate(< 0, 1, 0.5>,
             < 2, 3,   0>,
                       70 ) 
vaxis_rotate example

vtransform ( V, Transformation )
vinv_transform( V , Transformation )

Benotigt: #include "transform.inc"
Kombiniert Transformationen 'translate', 'scale', 'rotate' und 'matrix'.
vtransform() wendet eine Transformation auf einen Punkt an.
vinv_transform() macht die inverse Transformation ('undo').
#declare A = < 1.5, 0.3, 0.25 >;
#declare Trans1 =
   transform{ rotate<0,-50,0>
              translate<0,0.7,0> };
#declare B = vtransform ( A, Trans1 );
vtransform example

vturbulence(Lambda, Omega, Octaves, V)
Erzeugt den Turbulenz-Vektor für den Punkt V basierend auf den gegebenen Turbulenz-Werten. (Für Lambda, Omega, Octaves siehe POV-Ray Wiki.
Die Amplitude Ampl der Turbulence kann durch Multiplizieren des Turbulenz-Vektors gesteuert werden. Die Frequenz Freq mit der sich die Turbulenz ändert kann durch Multiplizieren von V gesteuert werden.
Wir erhalten eine turbulierte Version des Vektors V durch:
#declare V_Turb =
    V + Ampl*vturbulence(2, 0.5, 6, V*Freq);
vturbulence example
Beispiel vturbulence.txt

vnormalize( V )
Normierter Vektor A, ein Einheitsvektore in Richtung von A.
Formel: vnormalize(A)= A / vlength(A).
Warnung: Die Verwendung von vnormalize(<0,0,0>) erzeugt einen Error!
#if( vlength(V) != 0 )// if is not <0,0,0>
  #declare Vo = vnormalize( V );
#end
vnormalize example

vcross( V1, V2)
Kreuz-Produkt oder Vektorprodukt von A und B (' A x B '),
ein Vektor senkrecht zu den beiden orginalen Vektoren und mit einer Länge, die dem Flächeninhalt des Parallelogramms aus A und B. Formel:
AxB = |A|*|B|*sin(angle(A,B))*senkrechter_Einheitsvektor(A,B)
Die Länge des Krezprodukt-Vektors ist proportional zum Sinus des Winkels zwischen A und B.
#declare YellowVector =
            vcross( BlueVextor, GreenVector);
vcross example

vdot( V1, V2)
Skalarprodukt von V1 und V2. ('dot product', 'scalar product'). Dies ist direkt proportional zur den Längen der Vektoren V1 und V2 und dem Kosinus des Winkels zwischen V1 und V2.
Wenn vdot(A,B) = 0, dann VAngleD(A,B) = 90 Grad.
Formel: vdot=V1.x*V2.x + V1.y*V2.y + V1.z*V2.z.
#declare Vyellow =
 Vright*vdot(Vleft,Vright)/vdot(Vright,Vright);
vdot example

vlength( V )
Ergibt die Länge von V als eine Kommazahl.
Formel: vlength=sqrt(vdot(A,A)).
#declare Distance_AB = vlength( B-A );
vlength example

VAngle( V1, V2 )
VAngleD( V1, V2 )

Benötoigt: #include "math.inc"
Dies ergibt den Wert des Winkels zwischen den Vektoren V1 und V2.
VAngle() ergibt den Winkel in Radiant, VAngleD() in Grad.
VAngle example

VProject_Axis(V, Axis)
Benötigt: #include "math.inc"
Projektion eines Vektors V auf eine Achse 'Axis'.
Formel: Axis*vdot(V, Axis)/vdot(Axis, Axis).
#declare YellowV =
      VProject_Axis( BlueV, GreenV);
VProject_Axis example

Die hier dargestellten Vektor-Transformationen können im Abschnitt "Shearing & transform" in meinem "Insert Menu Add-on" als Text-Schablonen verwendet werden.

translate | rotate | scale | matrix | Scherung | transforms.inc | transform | Vektor-Transformationen
top

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