|
En ocasiones es útil combinar conjuntamente varias transformaciones y aplicarlas en múltiples lugares. Un identificador de transformación puede ser usado con este propósito. Los identificadores de transformación se declaran como sigue:
TRANSFORM_DECLARATION: #declare IDENTIFICADOR = transform{ TRANSFORMACION... } | #local IDENTIFICADOR = transform{ TRANSFORMACION... }
Donde IDENTIFICADOR es el nombre del identificador de hasta 40 caracteres de largo y TRANSFORMACION es cualquier modificador de transformación válido. Vea "#declare vs. #local" para información acerca del alcance. Aquí hay un ejemplo...
#declare MyTrans = transform { rotate DE_ESTA_MANERA scale MUCHO rotate -DE_ESTA_MANERA scale MAYOR translate ALLA rotate ALREDEDOR_DE }
Un identificador de transformacion se invoca con la palabra clave transform
,
con o sin los corchetes, como se muestra aquí:
object { MyObjeto // Obtener una copia de MiObjeto transform MiTrans // Aplicar la transformación translate -x*5 // Luego moverlo 5 unidades a la izquierda } object { MiObjeto // Obtener un copia de MiObjeto transform { MiTrans } // Aplicar la misma transformación translate x*5 // Luego moverlo 5 unidades a la derecha }
En objetos CSG extremadamente complejos, con muchos componentes,
puede acelerarse el análisis de la sintaxis si se aplica una transformación declarada en vez de los modificadores translate
,
rotate
, scale
,
o matrix
individualmente. El transformador
se adjunta sólo una vez a cada componente. Aplicar individualmente cada
modificador translate
, rotate
, scale
,
o matrix
tardará más tiempo. Esto sólo afecta al chequeo
de sintaxis: el dibujado funcionará con la misma rapidez.
|