anchor.diff:  	   (case (@ e which)
   	     ;; Left
   	     (37 (rotate-global-y mirror (/ pi 36))
  +		 (rotate-global-y sail (/ pi 36))
   		 (update))
   	     ;; Up
   	     (38 ((@ mirror rotate-z) (/ pi 36))
  +		 ((@ sail rotate-z) (/ pi 36))
   		 (update))
   	     ;; Right
   	     (39 (rotate-global-y mirror (/ pi -36))
  +		 (rotate-global-y sail (/ pi -36))
   		 (update))
   	     ;; Down
   	     (40 ((@ mirror rotate-z) (/ pi -36))
  +		 ((@ sail rotate-z) (/ pi -36))
   		 (update)))))
   
         (init)
  
positive.code: 		 (new (3fn *vector3 (@ mv4 x) ymin (@ mv4 z))))
  		((@ pf push)
  		 ;; Top
  		 (new (3fn *face3 0 1 2))
  		 (new (3fn *face3 2 3 0))
  		 ;; Bottom
  		 (new (3fn *face3 6 5 4))
  		 (new (3fn *face3 4 7 6))
  		 ;; 1st face
  		 (new (3fn *face3 0 4 1))
  		 (new (3fn *face3 1 4 5))
  
negative.code: 		   ((@ canvas get-context) "experimental-webgl")))))
         (:catch (e) false)))
  
      (let (scene mirror renderer camera origin projection controls loader light sail)
        
        (defun *mirror ()
  	(let* ((w 8)
  	       (w2 (/ w 2))
  	       (m (new (3fn *mesh-basic-material
  			    (create 
  			     color 0x444444
  			     side (@ *three* *double-side)
  			     wireframe t))))
  	       (s (new (3fn *geometry))))
  	  (with-slots (vertices faces) s
  	    ((@ vertices push)
  	     (new (3fn *vector3 0 0 0))
  	     (new (3fn *vector3 w2 0 0))
  	     (new (3fn *vector3 0 0 w2))
  	     (new (3fn *vector3 (- w2) 0 0))
  	     (new (3fn *vector3 0 0 (- w2))))
  	    ((@ faces push)
  	     (new (3fn *face3 0 1 2))
  	     (new (3fn *face3 0 2 3))
  