anchor.diff:  	;; Move the camera
   	((@ app camera position set) -4 -6 6)
   	app))
  -
   
       (defun add-reflection (app)
         (with-slots (absorbed normal incident reflectv reflection reflect-arrow mirror corners reflect-arrow tilt-update-fn origin scene visibility) app
  
positive.code: 	  (setf (@ o visible) false)
  	  o)))
      
      (defun projection (m)
        "Projection of that portion of the sunlight that hits the sail"
        (let ((mat (new (3fn *line-basic-material (create color 0xffff00))))
  	    (pg (new (3fn *geometry)))
  	    (ymin -500))
  	(with-slots ((pv vertices)) pg
  	  (with-slots ((mv vertices)) (@ m geometry)
  	    (let ((mv1 ((@ m local-to-world) ((@ mv 1 clone))))
  		  (mv2 ((@ m local-to-world) ((@ mv 2 clone))))
  		  (mv3 ((@ m local-to-world) ((@ mv 3 clone))))
  		  (mv4 ((@ m local-to-world) ((@ mv 4 clone)))))
  	      (let ((mv1b (new (3fn *vector3 (@ mv1 x) ymin (@ mv1 z))))
  		    (mv2b (new (3fn *vector3 (@ mv2 x) ymin (@ mv2 z))))
  		    (mv3b (new (3fn *vector3 (@ mv3 x) ymin (@ mv3 z))))
  		    (mv4b (new (3fn *vector3 (@ mv4 x) ymin (@ mv4 z)))))
  		((@ pv push)
  		 mv1 mv2 mv3 mv4 mv1
  		 mv1b mv2b mv3b mv4b mv1b
  		 mv1 mv2 mv2b mv3b mv3 mv4 mv4b)
  		(new (3fn *line pg mat))))))))
  
      (defun corners (m)
        "List of corner points of a mirror object in world coordinates"
  
negative.code: 	       (setf (@ ($ "#distance") 0 inner-h-t-m-l) ((@ ((@ *math floor10) pos -3) to-string)))
  	       (let* ((minutes (floor (/ elapsed 60)))
  		      (seconds (floor (- elapsed (* minutes 60)))))
  		 (setf (@ ($ "#elapsed") 0 inner-h-t-m-l)
  		       (+ ((@ minutes to-string)) (if (> seconds 9) ":" ":0") ((@ seconds to-fixed))))))
  	     ;; Move absorbed arrow
  	     ((@ absorb-arrow position copy) (@ sail position))
  	     ;; Update projection
  	     ((@ scene remove) projection)
  	     (setf projection (projection corners))
  	     ((@ scene add) projection))
  	   animate
  	   (lambda ()
  	     (request-animation-frame animate)
  