Shear_Trans( New_X, New_Y, New_Z)
Mehrfach-Scherung:
Die ehemalige x-Achse zeigt zum Vektor New_X, die y-Achse zeigt nach New_Y
und die z-Achse zeigt nach New_Z.
Shear_Trans(< 2, 0.5, 0>,
< 0, 0.5, 0>,
< 0, 0.5, 0.5>) |
|
|
Matrix_Trans( New_X, New_Y, New_Z, D)
|
Mehrfach-Scherung + Translation:
Die ehemalige x-Achse zeigt zum Vektor New_X, die y-Achse zeigt nach New_Y
und die z-Achse zeigt nach New_Z und zusätzlich noch eine Translation (Verschiebung) um
den Vektor D.
Matrix_Trans(< 2, 0.5, 0>,
< 0, 0.5, 0>,
< 0, 0.5,0.5>,
<-0.5, 0, 0> ) |
|
|
|
Axial_Scale_Trans( Axis, Amount )
Streckung in Richtung einer Achse "Axis"
um den Streckungsfactor "Amount"
Axial_Scale_Trans(< 2,0,2>, 0.5)
|
|
|
|
Rotate_Around_Trans
( <Rotate.x,Rotate.y,Rotate.z>, Center_of_Rotation )
Rotation mit dem Rotationsvektor <Rotate.x,Rotate.y,Rotate.z>
um das Rotationszentrum "Center_of_Rotation".
Rotate_Around_Trans(< 0, 0, 20>,
< 1.5,0.5, 1>) |
|
|
|
Axis_Rotate_Trans( Axis, Angle )
Rotation um eine Achse "" um einen Winkel "Angle" (in Grad).
Axis_Rotate_Trans(< 1,0,2>, 110) |
|
|
|
Reorient_Trans( Axis_1, Axis_2 )
Neuorientierung durch Drehung
von einer Achse "Axis_1" zur neuen Achse "Axis_2".
Reorient_Trans(< 1,0,0>,
< 1,0.0,2>) |
|
|
|
Point_At_Axis( New_Y_Axis )
Neuorientierung indem die y-Achse auf die "New_Y_Axis" ausgerichtet wird.
#declare New_Y_Axis = <0.25,1,0.15>;
object{ MyObject
Point_At_Trans( New_Y_Axis )} |
|
|
|
Center_Trans( OBJECT , axis )
a) Zentriert ein deklariertes Objekt 'OBJECT' in y-Richtung.
Center_Trans( OBJECT , y ) |
|
|
a) Zentriert ein deklariertes Objekt 'OBJECT' in x- und y-Richtung.
Center_Trans(OBJECT, x+y ) |
|
|
a) Zentriert ein deklariertes Objekt 'OBJECT' in x-, y- und z-Richtung.
Center_Trans(OBJECT,x+y+z) |
|
|
|
Keine Transformation, aber oft hllfreich bei Transformationsproblemen: (built-in feature!)
min_extent( OBJECT_IDENTIFIER )
max_extent(OBJECT_IDENTIFIER)
Dies liefert die Minimum- und Maximum-Koordinaten eines deklarierten Objekts
oder die Ecken einer bounding box für diese Objekt.
Achtung: Für CSG intersection und difference oder isosurface
repräsentiert die bounding box nicht die tatsächlichen Dimensionen des Objektes!
|
|
Demo der bounding box:
object{ Wire_Box(min_extent(OBJECT),max_extent(OBJECT),0.05)
pigment{ rgb<1,0.65,0>}
} |
Länge in x-Richtung der bounding box:
#declare Length_X =
max_extent(OBJECT).x - min_extent(OBJECT).x; |
Mitte eines Objektes OBJECT:
#declare Center =
0.5*( min_extent(OBJECT)+ max_extent(OBJECT)); |
|
|