Facebook ZX Spectrum
from kandinsky import * from math import sqrt from random import random light_dir = (20,0,20) cx, cy = 160, 111 radius = 90 def alea(): return (random()-.5)/5 mag = sqrt(sum(i*i for i in light_dir)) lx, ly, lz = [i/mag for i in light_dir] for y in range(-radius, radius): for x in range(-radius, radius): if x*x + y*y <= radius*radius: z = sqrt(radius*radius - x*x - y*y) nx, ny, nz = x / radius, y / radius, z / radius dot = nx*lx + ny*ly + nz*lz intensity = max(dot, 0) probability = 1 - intensity if random() < probability: set_pixel(cx + x, cy + y, (0,)*3)