8feb09 It works. Thanks to homogeneous coordinates (and projective space) we can build a "singular" matrix using the v=light-direction vector (hence v[3]=0) and the canvas co-point (it has as fourth coordinate the constant in the equation xa+yb+zc=d ~ (a,b,c,-d) . pcnvs=[a,b,c,-d] The canvas-projector is the matrix: Id - [vp]/(vp) where [va] is the outer product and (va) is the inner i.e. y = x - v (px)/(pv) is the point x projected along v to canvas a 9feb09 Seems nonthing nees to be declared "global" since it works just fine, even cnv which is used inside a definition. I don't understand python's meaning of the word "global".