anchor.diff:                (- zfar znear)))
           (f (/ (* -2 znear zfar)
                 (- zfar znear))))
  -    (sb-cga:matrix   a  0.0     c  0.0
  -                   0.0    b     d  0.0
  -                   0.0  0.0     e    f
  -                   0.0  0.0  -1.0  0.0)))
  +    (sb-cga:matrix   a    0.0     c  0.0
  +                     0.0    b     d  0.0
  +                     0.0  0.0     e    f
  +                     0.0  0.0  -1.0  0.0)))
   
   ;; ----------------------------------------------------------------------------
   (defun perspective (fov aspect znear zfar)
     (let* ((ymax (SFFloat (* znear
  -                          (tan (radians (SFFloat (/ fov 2)))))))
  +                           (tan (radians (SFFloat (/ fov 2)))))))
            (ymin (- ymax))
            (xmin (* ymin aspect))
            (xmax (* ymax aspect)))
  
positive.code: 
  (in-package #:cl-3d)
  
  (defun radians (x)
    (declare (single-float x))
    (* x (/ pi 180)))
  
  (defun degrees (x)
    (declare (single-float x))
    (* x (/ 180 pi)))
  
  ;; ----------------------------------------------------------------------------
  (defun frustum (xmin xmax ymin ymax znear zfar)
  
negative.code:           (SFRotation (SFVec3f x y z) angle))
          (SFRotation 0 0 1 0))))
  
  ;; ----------------------------------------------------------------------------
  (defmethod SFRotation+ (a b)
    (let ((a (SFMatrix4F<-SFRotation a))
          (b (SFMatrix4F<-SFRotation b)))
      (SFRotation<-SFMatrix4F (sb-cga:matrix* a b))))
  
  ;; ----------------------------------------------------------------------------
  (defmethod SFRotation-reorient (v1 v2)
    ""
    (let ((nv1 (sb-cga:normalize v1))
          (nv2 (sb-cga:normalize v2)))
      (print nv1)
      (print nv2)
      (if (sb-cga:vec~ nv1 nv2)
          (list (SFVec3f 0 0 1) (SFFloat 0.0))
          (let* ((vec (sb-cga:normalize (sb-cga:cross-product nv1 nv2)))
                 (cross (sb-cga:dot-product nv1 nv2))
                 (angle  (SFFloat (radians 1.0))))
                                          ;(SFFloat (realpart (acos (sb-cga:dot-product nv1 nv2))))))
            (print vec)
            (print angle)
            (list vec angle)))))
  