3.6.18 transforms.inc

Plusieurs macros de transformation utiles. Toutes ces macros donnent des transformations, vous pouvez les utiliser partout où vous utilisez la taille, la rotation, etc. Les descriptions assument que vous travaillez avec un objet, mais les macros fonctionnent bien avec les textures, etc.


Shear_Trans(A, B, C). Cette macro réoriente et déforme un objet de façon à ce que ses axes d'origine XYZ pointent vers A, B et C, donnant un effet de torsion lorsque les vecteurs ne sont pas perpendiculaires. Vous pouvez aussi utiliser des vecteurs de différentes longueurs pour affecter la taille, ou utiliser des vecteurs perpendiculaires pour réorienter l'objet.
Paramètres :


Matrix_Trans(A, B, C, D). Cette macro fournit une façon de spécifier une matrice de transformation avec 4 vecteurs. L'effet est très similaire à la macro Shear_Trans(), mais le quatrième paramètre contrôle le déplacement.
Paramètres :


Axial_Scale_Trans(Axis, Amt). Une sorte de dimensionnement directionnel, cette macro déformera un objet selon un axe spécifié.
Paramètres :


Axis_Rotate_Trans(Axis, Angle). Cela est équivalent à la transformation faite par la fonction vaxis_rotate(), et fait pivoter autour d'un axe arbitraire.
Paramètres :


Rotate_Around_Trans(Rotation, Point). La rotation ordinaire se fait autour de l'origine, cette macro le fait autour d'un point spécifique.
Paramètres :


Reorient_Trans(Axis1, Axis2). Cela aligne Axis1 à Axis2 par rotation de l'objet autour d'un vecteur perpendiculaire à Axis1 et Axis2.
Paramètres :


Point_At_Trans(YAxis). Cette macro est similaire à Reorient_Trans(), mais il pointe l'axe y le long de Axis.
Paramètres :


Center_Trans(Object, Axis). Calcule une transformation qui centrera un objet le long d'un axe spécifié. Vous indiquez les axes que vous voulez centrer par ajout de "x", "y" et "z" dans le paramètre Axis.

Note : cette macro calcule la transformation pour centrer la boîte englobante de l'objet, ce qui n'est peut être pas très exact. Il n'y a pas de moyen pour définir le centre d'un objet arbitraire.

Paramètres :

Utilisation :

object {MyObj Center_Trans(MyObj, x)}	//centre le long de l'axe x

Vous pouvez aussi centrer selon plusieurs axes :

object {MyObj Center_Trans(MyObj, x+y)}	//centre le long des axes x et y

Align_Trans(Object, Axis, Pt). Calcule une transformation qui aligne le côté de la boîte englobante d'un objet avec un point. Des valeurs négatives sur Axis aligneront les côtés faisant face aux fins négatives du système de coordonnées, des valeurs positives aligneront les côtés opposés, 0 signifie de ne faire aucun alignement sur cet axe.
Paramètres :

Utilisation :

object {
	MyObj
	Align_Trans(MyObj, x, Pt)	//aligne le côté droit de l'objet pour être coplanaire avec Pt
	Align_Trans(MyObj,-y, Pt)	//aligne le bas de l'objet pour être coplanaire avec Pt
}

vtransform(Vect, Trans) et vinv_transform(Vect, Trans).
La macro vtransform() prend une transformation (rotation, dimensionnement, déplacement, etc...) et un point, et renvoie le résultat de l'application de la transformation à ce point. La macro vinv_transform() est similaire, mais elle applique l'inverse de la transformation, en fait elle défait la transformation. Vous pouvez combiner les transformations en les englobant dans un bloc de transformation.
Paramètres :


Spline_Trans(Spline, Time, SkyVector, ForeSight, Banking). Cette macro aligne un objet avec une génératrice pour une certaine durée de temps. L'axe z de l'objet pointera en avant de la génératrice et l'axe y pointera vers le haut.
Paramètres :

Utilisation :

object {MyObj Spline_Trans(MySpline, clock, y, 0.1, 0.5)}
3.6.17 textures.inc 3.6.17 textures.inc 3.6.19 woodmaps.inc, woods.inc 3.6.19 woodmaps.inc, woods.inc