// 3-D Kaleidoscope Common Int rgb Common Float ct, st, cp, sp Int x[180], y[180], z[180] Int xm, ym randomize graphon hide mouse xx=75; yy=50; zz=25 Do k=0,179 x[k]=0 y[k]=0 z[k]=0 Loop ndx=0 Do read mouse (xm, ym, 0) p=(xm-320)/150.0; t=(96-ym)/150.0 ct=cos(t); st=sin(t) cp=cos(p); sp=sin(p) xx=xx+random(10)-5 yy=yy+random(11)-5 zz=zz+random(12)-5 If iabs(xx)>200 Or iabs(yy)>200 Or iabs(zz)>200 xx=0; yy=0; zz=0 Endif x[ndx]=xx y[ndx]=yy z[ndx]=zz cls Do k=0,179 rgb=k/30+1 mirror (x[k], y[k], z[k]) @ Loop ndx=(ndx+1)%180 If readkey(27) Call quit delay (50) Loop Task mirror (Int x, Int y, Int z) octants (x, y, z) @ octants (x, z, y) @ octants (y, z, x) @ octants (y, x, z) @ octants (z, x, y) @ octants (z, y, x) @ Task octants (Int x, Int y, Int z) project (+x, +y, +z) @ project (+x, +y, -z) @ project (+x, -y, +z) @ project (+x, -y, -z) @ project (-x, +y, +z) @ project (-x, +y, -z) @ project (-x, -y, +z) @ project (-x, -y, -z) @ Task project (Int x, Int y, Int z) Common Int rgb Common Float ct, st, cp, sp xx=cp*x+sp*(ct*z+st*y) yy=ct*y-st*z zz=cp*(ct*z+st*y)-sp*x put pixel (320+xx, 240-yy, rgb+8*(zz>0))