6.3.4  Identificadores de Transformación

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.