1// Stereographic Projection 2// Mapping an infinite plane onto the surface of a unit sphere. 3// https://en.wikipedia.org/wiki/Stereographic_projection 4 5let 6 stereographic_projection plane = sphere 2 >> colour 7 ([x,y,z,t]->plane.colour[x/(1-z), y/(1-z), 0, t]); 8 9 log_spiral [a,b] = make_shape { 10 dist [x,y,_,_] = 11 let r = mag[x,y]; 12 t = phase[x,y]; 13 in if (r == 0) 14 0 15 else 16 let n = (log(r/a)/b - t) / tau; 17 upper_r = a * e^(b*(t+tau*ceil n)); 18 lower_r = a * e^(b*(t+tau*floor n)); 19 in min[abs(upper_r-r), abs(r-lower_r)] - r*b; 20 is_2d = true; 21 }; 22 spiral = union[colour red everything, log_spiral[1,.2]]; 23 24in 25spiral >> stereographic_projection 26