|
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.
|