DEF OUT=T:<1,2,3>:<0.5,1,1.5>:(CUBOID:<1,1,1>); OUT; DEF OUT=S:<1,2,3>:<2,2,0.2>:(CUBOID:<1,1,1>); OUT; DEF OUT=R:<1,2>:(PI/4):(CUBOID:<1,1,1>); OUT; DEF element = (T:<1,2>:<-5,-5> ~ CUBOID):<10,10,2>; DEF pair = STRUCT:< element, (T:3:2 ~ R:<1,2>:(PI/8)):element >; DEF column = (STRUCT~##:17)::(PI/8)>; column; DEF myRotn (alpha::IsReal; n::IsVect) = IF:< OR~[IsUp,myIsZero]~s2,R:<1,2>~s1,Rot_n>: WHERE Rot_n (alpha::IsReal; n::IsVect) = (MAT~TRANS):Q ~ R:<1,2>:alpha ~ MAT:Q, Q = MatHom:, qx = UnitVect:(<0,0,1> VectProd n), qy = qz VectProd qx, qz = UnitVect:n, IsUp = AND ~ [C:EQ:0 ~ s1, C:EQ:0 ~ s2, NOT ~ C:EQ:0 ~ s3] END; DEF myIsZero = AND ~ AA:(C:EQ:0); DEF OUT=(STRUCT~[K:mkframe, (myrotn:< pi/2, <1,1,0> > ~ CUBOID), @1~CUBOID]):<0.9,0.4,0.1>; OUT; DEF out=solidifier:'Alberto'; out; DEF tensor = (MAT ~ mathom):<<1,0.5,0>,<0,1,0>,<0,0,1>>; DEF OUT= (optimize ~ tensor ~ solidifier):'Alberto'; out; DEF OUT=(STRUCT~[K:mkframe,(T:1:1 ~ R:<1,2>:(PI/4) ~ T:1:-1)~CUBOID,@1~CUBOID]) :<1,1,1>; out; DEF background = (S:<1,2>:<0.8,0.8> ~ JOIN ~ Circle:1):<24,1> ; DEF minute = (T:<1,2>:<-0.05,-0.05> ~ CUBOID):<0.9,0.1>; DEF hour = (T:<1,2>:<-0.1,-0.1> ~ CUBOID):<0.7,0.2>; DEF ticks = (STRUCT ~ ##:12):< tick, R:<1,2>:(PI/6) >; DEF tick = (T:<1,2>:<-0.025,0.55> ~ CUBOID):<0.05,0.2>; DEF clock2D (h,m::IsInt) = (@1~STRUCT):< background, ticks, R:<1,2>:( PI/2 - (h + m/60)*PI/6 ):hour, R:<1,2>:( PI/2 - m*PI/30 ):minute >; DEF OUT=clock2d:<10,10>; DEF clock3D (h,m::IsInt) = STRUCT:< background * Q:0.2 COLOR RED, T:3:0.2, (ticks * Q:0.01), T:3:0.01, R:<1,2>:( PI/2 - (h + m/60)*PI/6 ):(hour * Q:0.03), T:3:0.03, R:<1,2>:( PI/2 - m*PI/30 ):(minute * Q:0.03) >; DEF OUT=clock3d:<7,25>; DEF out = MOVE: clock3D:<<2,10>,<2,30>,<2,50>>:<0,20,40>; out;