/*///////////////////////////////////////////////////////////////////////////// MACRO de ANIMACION Camilo Bravo cambraca@latinmail.com Los "puntos" pueden ser vectores, colores, "integers", etc. Sintaxis: Animar(p1,p2,t1,t2,var) donde: p1 - es el punto 1 p2 - es el punto 2 t1 - es el clock donde comienza t2 - es el clock donde termina var - la variable que ayuda a la animación (integer, de -100 a 100, 0 es linear) si es mayor que 0, empieza lento y termina rápido si es menor que 0, empieza rápido y termina lento Notas: En var, los valores -100 y 100 son exagerados. Generalmente se obtienen buenos resultados con valores de -10 a 10. Ejemplo: sphere { <1,4,7>, 10 pigment {...} rotation Animar(<1,7,3>,<8,4,2>,0,2,70) } */ #macro Animar (p1,p2,t1,t2,var) #local menorQue0=0; #if (clock>=t1 & clock<=t2) //si el clock está en el rango... #local temp=10/(t2-t1); #local Tclock=(clock-t1)*temp; //Tclock es del 0 al 10 #local Pow=abs(var)/10+1 //de "var", 100 queda 11, 0 queda 1, -100 queda 11 #if (var<0) //determinar si "var" es mayor o menor que 0 #local menorQue0=1; #else #local menorQue0=0; #end #if (menorQue0) //si "var" es menor que 0... #local clock2=pow(10-Tclock,Pow)*10/pow(10,Pow); //si "var" es menor a 0 #local clock2=10-clock2; #else #local clock2=pow(Tclock,Pow)*10/pow(10,Pow); //calcular #end #local clock2=(clock2/temp)+t1; //convertir a usable #else #if (clockt2) #local clock2=t2; #end #end ((clock2-t1)*(p2-p1)/(t2-t1)+p1) #end