+(defun fov-table (imager focal-length
+ &key (output *standard-output*) (projection :rectilinear)
+ (units :feet))
+ (let ((imager-dim (etypecase imager
+ (cons imager)
+ (symbol (imager-dimensions imager))))
+ (distances (mapcar 'feet->mm +distances-feet+)))
+ (format output "~8A ~6A ~6A ~6A ~6A~%" "DISTANCE" "WIDTH" "HEIGHT" "DIAGON" "MAG")
+ (loop for distance in distances
+ do (let ((fov (multiple-value-list (fov focal-length
+ (car imager-dim) (cdr imager-dim)
+ distance
+ :projection projection))))
+ (format output "~8F: ~6F ~6F ~6F ~6F~%"
+ (mm->length distance units)
+ (nth 0 fov) (nth 1 fov) (nth 2 fov) (nth 3 fov)))))
+ (values))
+