+(defun fov-distance (focal-length frame-width frame-height distance
+ &key (projection :rectilinear))
+ "Returns the field of view and image magnificaion ratio at a given distance.
+NOTE: magnification assumes that distance is in the same units as frame size: mm"
+ (multiple-value-bind (fov-width fov-height fov-diagonal)
+ (fov focal-length frame-width frame-height :projection projection)
+ (let* ((d-width (* distance (sin (degrees->radians fov-width))))
+ (d-height (* distance (sin (degrees->radians fov-height))))
+ (d-diagonal (* distance (sin (degrees->radians fov-diagonal))))
+ (mag (/ frame-width d-width)))
+ (values d-width d-height d-diagonal mag))))
+