anchor.diff:        "Rotate an object around the global Y axis by the given number of radians"
         (let* ((gy (new (3fn *vector3 0 1 0)))
   	     (ly ((@ object world-to-local) gy)))
  +	((@ ly normalize))
   	((@ object rotate-on-axis) ly rad)))
   
       (defun init-absorb ()
  
positive.code: 	(setf (@ arrow visible) bool)))
      
      (defun arrows-visible (bool)
        (dolist (a (list normal-arrow incident-arrow tangential-arrow reflection-arrow))
  	(arrow-visible a bool)))
      
      (defun update-tilt-direction ()
  
negative.code:       ;; Update angle fields
        (setf (@ ($ "#incidence") 0 inner-h-t-m-l) ((@ incidence to-string)))
        (setf (@ ($ "#rotation") 0 inner-h-t-m-l) ((@ rotation to-string)))
        (let ((absorbed-html (@ ($ "#absorbed") 0)))
  	(when absorbed-html
  	  (setf (@ absorbed-html inner-h-t-m-l) ((@ absorbed to-string)))))
        ;; Update absorbed arrow
        ((@ absorb-arrow set-length) (* 10 (/ absorbed 100))))
  
      (defun calc-absorbed (incidence)
        "Calculate the absorbed percentage from the incidence angle"
        (abs ((@ *math round10) (* 100 (cos (* incidence (/ pi 180)))) -1)))
  
      (defun up ()
        "Increment incidence"
  