anchor.diff:  		 0 0 C D
   		 0 0 -1 0)))
   
  -;; (defun make-frustum-transform (left right bottom top near far)
  -;;   "Create a raw CFFI frustum matrix."  
  -;;   (let ((a (- (/ (+ right left) (- right left))))
  -;; 	(b (- (/ (+ top bottom) (- top bottom))))
  -;; 	(c (/ -2 (- far near)))
  -;; 	(d (- (/ (+ far near) (- far near)))))
  -    
  -;;     (sb-cga:transpose-matrix
  -;;      (make-matrix (/ 2 (- right left)) 0 0 A
  -;; 		  0 (/ 2 (- top bottom)) 0 B
  -;; 		  0 0 C D
  -;; 		  0 0 0 1))))
  -
  -
   (defun make-perspective-transform  (fovy aspect znear zfar)
     "Create a raw CFFI perspective matrix."
     (let* ((ymax (* znear (tan fovy)))
  
positive.code: 
  						     
  
    ;; int glhUnProjectf(float winx, float winy, float winz, float *modelview, float *projection, int *viewport, float *objectCoordinate)
    ;; {
    ;;     //Transformation matrices
    ;;     float m[16], A[16];
    ;;     float in[4], out[4];
    ;;     //Calculation for inverting a matrix, compute projection x modelview
    ;;     //and store in A[16]
  
  (defun unproject (x y width height transform)
    (let* ((new-x (1- (/ (* 2 x) width)))
  	 (new-y (1- (/ (* 2 y) height)))
  
negative.code:     (values start
  	    (sb-cga:normalize (sb-cga:vec- end start)))))
    
  