3.12.2  Variables dependientes del reloj y animaciones multiescena

Bien, qué pasará si queremos que la bola ruede de izquierda a derecha para la primera mitad de la animación, entonces cambie 135 grados su dirección y ruede de derecha a izquierda, y regrese hacia atrás. Necesitaremos usar la nueva directiva condicional de POV-Ray y hacer pruebas con el valor de clock para determinar el momento en que hemos alcanzado el punto medio del recorrido y entonces comenzar a trazar la escena con un valor de clock diferente dependiendo de la secuencia. Para nuestro objetivo, citado anteriormente, estamos trabajando con una variable que toma valores entre 0 y 1 (normalizado) con el propósito de hacerlo matemáticamente más ordenado cuando tenemos que controlar muchos aspectos durante la animación. De esta manera, vamos a asumir que conservamos la misma cámara, luz y el plano y dejamos que el valor de clock corra desde 0 a 2. Ahora sustituimos la declaración de la única esfera como sigue...
  #if ( clock <= 1 )
    sphere { <0, 0, 0> , 1
      pigment {
        gradient x
        color_map {
          [0.0 Blue  ]
          [0.5 Blue  ]
          [0.5 White ]
          [1.0 White ]
        }
        scale .25
      }
      rotate <0, 0, -clock*360>
      translate <-pi, 1, 0>
      translate <2*pi*clock, 0, 0>
    }
  #else
    //(si clock es > 1, estamos en la segunda fase)
    // queremos trabajar con un valor de 0 a -1
    #declare ElseClock = clock - 1;
    sphere { <0, 0, 0> , 1
      pigment {
        gradient x
        color_map {
          [0.0 Blue  ]
          [0.5 Blue  ]
          [0.5 White ]
          [1.0 White ]
        }
        scale .25
      }
      rotate <0, 0, ElseClock*360>
      translate <-2*pi*ElseClock, 0, 0>
      rotate <0, 45, 0>
      translate <pi, 1, 0>
    }
  #end
Si localizamos qué es lo que origina que la bola haga un giro instantáneo poco realista cuando cambia de dirección, ¡puntos de bonos para nosotros, estamos dando a luz a un animador!. Sin embargo, para simplificar el ejemplo, vamos a ignorar esto por ahora. Será bastante más fácil arreglarlo en el mundo real después de que examinemos cómo funciona el código actual.

Esto es completamente diferente a lo que hemos hecho antes, puesto que el clock varía de 0 a 2, y nosotros queríamos trabajar con valores normalizados del clock en lugar de éstos. De esta manera, cuando el valor de clock sobrepase el valor 1.0, POV asumirá que la segunda fase de la trayectoria ha comenzado, y declaramos una nueva variable Elseclock  la cual hemos construido relacionándola con el valor original del clock, mientras que clock está variando de 1 a 2, de la misma manera Elseclock está variando de 0 a 1. Así, aun cuando sólo haya un clock, podemos declarar tantas variables adicionales como nosotros queramos (y tengamos memoria para almacenarlas), así en escenas muy complejas, un único valor de la variable clock puede ser el factor que coordina todos los movimientos.