anchor.diff:      (gl:with-pushed-matrix
         (p2dglu:translate2 position)
         (p2dglu:color4 color)
  -      (p2dglu:rotatez* orientation)
  -      (gl:scale 8 10 8)
  +      (p2dglu:rotatez* (- orientation (/ p2dm:+pi+ 2)))
  +      (gl:scale 7 10 7)
         (p2dglu:draw-triangle))))
   
   
positive.code: (defparameter +min-boid-distance-to-game-area-boundary+ 30)
  
  (defparameter +boid-perception-range+ 50)
  
  
  
negative.code:      do (draw-boid boid)))
  
  (defun update-player (dt)
    (with-slots (position velocity orientation color speed angular-speed)
        (player *world*)
  
      ;; input
      (setf speed (cond ((key-pressed-p :scancode-up)
                         +player-running-speed+)
                        ((key-pressed-p :scancode-down)
                         +player-slow-speed+)
                        (t
                         +player-base-speed+))
            angular-speed (cond ((key-pressed-p :scancode-left)
                                 (+ +player-angular-speed+))
                                ((key-pressed-p :scancode-right)
                                 (- +player-angular-speed+))
                                (t
                                 0.0)))
  
      ;; physics
      (incf orientation (* angular-speed dt))
      (setf velocity (p2dm:scaled-vector (p2dm:rotated-vector-2d (p2dm:make-vector-2d 1.0 0.0) orientation)
                                         speed))
      (p2dm:add-to-vector position (p2dm:scaled-vector velocity dt))))
  
  (defun draw-player ()
    (with-slots (position velocity orientation color)
  