#include "common.inc" #include "colors.inc" /* * per ora arriva solo fino a RRmRRmRLmLLm (scaffali) * per k=11 */ #if (clock > 0) #declare stadio = int (clock); #declare shape = int (clock/2); #declare parametro = clock - 2*shape; #end #ifndef (shape) #declare shape=0; #end #ifndef (parametro) #declare parametro = 0; #end //sphere { // 0 // 1.0 // pigment {color Blue} //} #declare RM_Partial = parametro; #declare tr1 = transform { translate -3*RM_HalfSize*x translate -RM_HalfSize*z } #declare tr2 = transform { transform {tr1} rotate -180*x translate -RM_HalfSize*z } #declare tr3 = transform { transform {tr2} translate RM_Size*x rotate 90*z translate -RM_Size*x rotate 180*x translate RM_Size*x } #declare tr4 = transform { transform {tr3} translate RM_HalfSize*z rotate -180*y translate -RM_HalfSize*z } #declare tr5 = transform { transform {tr4} translate RM_HalfSize*z rotate -180*y translate -RM_HalfSize*z } #declare tr6 = transform { transform {tr5} rotate -90*z rotate 180*x translate -1.5*RM_Size*x } #declare tr7 = transform { transform {tr6} translate -RM_HalfSize*z } #switch (shape) #case (0) object { RM_RubiksMagic("RRRmpURmpRRU") transform {tr1} translate RM_Thickness*y } #break #case (1) object { RM_RubiksMagic("RRRmmUvpRmmRRUmp") transform {tr1} rotate -90*RM_Partial*x translate -0.5*RM_HalfSize*RM_Partial*z translate RM_Thickness*y } #break #case (2) #declare RM_Partials[1] = RM_Partial/2; object { RM_RubiksMagic("RvpRmp1RmQ1RvQRmQ1Rmp1RvpLmQ") transform {tr2} translate RM_Size*x rotate RM_Partial*45*z translate -RM_Size*x rotate 90*RM_Partial*x translate RM_Partial*RM_HalfSize*x translate RM_Thickness*y } #break #case (3) object { RM_RubiksMagic("DvQRmRmRRmRmDvQL") transform {tr3} translate RM_HalfSize*z rotate -90*RM_Partial*y translate -RM_HalfSize*z translate RM_Thickness*y } #break #case (4) object { RM_RubiksMagic("DmpRmRmRRmRmDmpL") transform {tr4} translate RM_HalfSize*z rotate -90*RM_Partial*y translate -RM_HalfSize*z translate RM_Thickness*y } #break #case (5) #switch (stadio) #case (10) object { RM_RubiksMagic("LmQRmPRmRRmRmPLmQL") transform {tr5} translate RM_Thickness*y } #break #case (11) #declare RM_Partial = RM_Partial - 1; #declare RM_Partials[1] = 1 + RM_Partial; #declare RM_Partials[2] = 2*RM_Partial; object { RM_RubiksMagic("Lmp1RRmPRmp2RmPRLmp1Lv2") transform {tr5} rotate -90*RM_Partial*z translate -1.5*RM_Partial*RM_Size*x rotate RM_Partial*180*x translate RM_Thickness*y } #break #end #break #case (6) #declare RM_Partials[1] = 2 - RM_Partial/2; #declare RM_Partials[2] = 2 - 1.5*RM_Partial; object { RM_RubiksMagic("Dmp1RRDmp2RRDmp1Dvp1") transform {tr6} translate -0.5*RM_Partial*RM_HalfSize*z translate RM_Thickness*y } #break #case (7) object { RM_RubiksMagic("DmRRDvRRDmDv") transform {tr7} translate RM_Thickness*y } #break #end /* object { RM_RubiksMagic("RRmDmLmURmUmLm") rotate -90*z rotate 180*y translate RM_Size*x translate 3*RM_HalfSize*y translate RM_HalfThickness*y } */