Descrizioni ed esempi per POV-Ray di Friedrich A. Lohmüller
Trasformazioni Geometriche con POV-Ray -
English English English
Français français
Deutsch Deutsch

Home
- POV-Ray Tutorial
  Trasformazioni
  Geometriche
   - Indice

    Trasformazioni
    di Base
    - "translate<  ... >"
    - "rotate<  ... >"
    - "scale<  ... >"
    - Immagine speculare

    Altre
    Trasformazioni
    - "matrix<  ... >"
    - scorrimento elastico
    - transforms.inc
      - Shear_Trans(...)
      - Matrix_Trans(...)
      - Axial_Scale_Tr.
      - Rotate_Around
      - Axis_Rotate_Tr.
      - Reorient_Trans
      - Point_At_Trans
      - Center_Trans
      - min_+max_extent

    - "transform{ ...}"
        e "inverse"

    Vettori e
    Trasformazioni
    - vrotate
    - vaxis_rotate
    - vtransform
    - vinv_transform
    - vturbulence
    - vnormalize
    - vcross
    - vdot()
    - vlength()
    - VAngle(), VAngleD()
    - VProject_Axis

    Insert Menu Add-on
      & download
 
                                           
Trasformazioni in "transforms.inc"
Qualque combinazione addizionale di transformazioni molto pratice sono definito come macros nel include file "transforms.inc". Per usare queste macros si deve inserare nel testo (al inizio):
#include "transforms.inc"

Shear_Trans( New_X, New_Y, New_Z)
Uno scorrimento elastico molteplice:
L'asse x precedente indice verso il vettore New_X, l'asse y verso il vettore New_Y e l'asse z verso il vettore New_Z.
 Shear_Trans(< 2, 0.5,   0>,
             < 0, 0.5,   0>,
             < 0, 0.5, 0.5>) 
Shear_Trans example

Matrix_Trans( New_X, New_Y, New_Z, D)
Scorrimento elastico molteplice + Translazione:
L'asse x precedente indice verso il vettore New_X, l'asse y verso il vettore New_Y e l'asse z verso il vettore New_Z, con l'aggiunta di una translazione con il vettore D.
 Matrix_Trans(< 2, 0.5,  0>,
              < 0, 0.5,  0>,
              < 0, 0.5,0.5>,
              <-0.5, 0, 0> ) 
Matrix_Trans example

Axial_Scale_Trans( Axis, Amount )
Lo stiramento in direzione di un asse "Axis" con il fattore "Amount"
 Axial_Scale_Trans(< 2,0,2>, 0.5)
               
Axial_Scale_Trans example

Rotate_Around_Trans
( <Rotate.x,Rotate.y,Rotate.z>, Center_of_Rotation )
Una rotazione con il vettore di rotazionw <Rotate.x,Rotate.y,Rotate.z> intorno al centro "Center_of_Rotation".
Rotate_Around_Trans(<   0,  0, 20>,
                    < 1.5,0.5,  1>) 
Rotate_Around_Trans example

Axis_Rotate_Trans( Axis, Angle )
Rotazione intorno a un asse "Axis" con il angelo di "Angle" (in gradi).
Axis_Rotate_Trans(< 1,0,2>, 110) 
Axis_Rotate_Trans example

Reorient_Trans( Axis_1, Axis_2 )
Reorientazione con rotazione di un asse "Axis_1" verso un asse nouvo "Axis_2".
Reorient_Trans(< 1,0,0>,
               < 1,0.0,2>) 
 Reorient_Trans example

Point_At_Axis( New_Y_Axis )
Reorientazione con rotazione con l'asse di y verso un asse nouvo "New_Y_Axis".
#declare New_Y_Axis = <0.25,1,0.15>;
object{ MyObject
        Point_At_Trans( New_Y_Axis )}
Point_At_Axis example

Center_Trans( OBJECT , axis )
a) Centra un oggetto dichiarato 'OBJECT' in direzione y.
Center_Trans( OBJECT , y )
Center_Trans example
a) Centra un oggetto dichiarato 'OBJECT' in direzione x e y.
Center_Trans(OBJECT, x+y )
Center_Trans example
a) Centra un oggetto dichiarato 'OBJECT' in direzione x, y e z.
Center_Trans(OBJECT,x+y+z)
Center_Trans example

Nessuna trasformazione, ma spesso disponibile in tutto trasformazioni problemi: (una funzionalità built-in!)
min_extent( OBJECT_IDENTIFIER )
max_extent(OBJECT_IDENTIFIER)

Questo restituisce il minimo e il massimo dei coordinati di un oggetto dichiarato o gli angoli di un bounding box per questo oggetto.
Attenzione: Per CSG intersezioni e differenze o isosuperfici il bounding box non rappresenta le reali dimensioni dell'oggetto!
Center_Trans example
Demo bounding box:
object{ Wire_Box(min_extent(OBJECT),max_extent(OBJECT),0.05)
        pigment{ rgb<1,0.65,0>}
      } 
Lunghezza in x della bounding box:
#declare Length_X =
                max_extent(OBJECT).x - min_extent(OBJECT).x;
Centro dell'OBJECT:
#declare Center =
              0.5*( min_extent(OBJECT)+ max_extent(OBJECT));

Per queste trasformazioni si può usare dei modelli di testo della sezione "Shearing & transform" del mio "Insert Menu Add-on".

translate | rotate | scale | matrix | scorrimento elastico | transforms.inc | transform | trasformazioni di vettori
top

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