r10527: add extension-tube
authorKevin M. Rosenberg <kevin@rosenberg.net>
Tue, 10 May 2005 22:10:36 +0000 (22:10 +0000)
committerKevin M. Rosenberg <kevin@rosenberg.net>
Tue, 10 May 2005 22:10:36 +0000 (22:10 +0000)
debian/changelog
fov.lisp
package.lisp

index cd5670908741209462af38638b2aea880f3bd711..65bc3f4ab8656cba0782d73949b9ac7b4ae2ed6f 100644 (file)
@@ -1,3 +1,9 @@
+cl-photo (0.9-1) unstable; urgency=low
+
+  * Add extension-tube and print-magnification
+
+ -- Kevin M. Rosenberg <kmr@debian.org>  Tue, 10 May 2005 16:10:26 -0600
+
 cl-photo (0.8-1) unstable; urgency=high
 
   * bug fixes required for sarge
index 6fec649da285882846259180f3037c6fdaf74cd6..a66d551f5cc87f0b1f342d8801903171ff89bbf2 100644 (file)
--- a/fov.lisp
+++ b/fov.lisp
@@ -209,13 +209,29 @@ Returns: focal-length object-distance image-distance magnification bellows-facto
   (1+ (magnification :focal-length focal-length :object-distance object-distance)))
 
 (defun extension-tube (focal-length &key original-object-distance new-object-distance original-image-distance
-                                        new-object-distnace original-magnification new-magification
+                                        original-magnification
+                                        new-object-distance new-image-distance new-magnification
                                         extension-length (units :feet))
   "Computes the parameters for using extension tubes.
 Requires: 1. original-object-distance, original-image-distance, or original-magnification
           2. new-object-distance, new-image-distance, new-magnification, or extension-length
-Returns: original-object-distance, original-image-distance, original-magnification,
+Returns: original-object-distance, original-image-distance, original-magnification, original-bellows-factor
          new-object-distance, new-image-distance, new-magnification, extension-length."
-  )
+  
+  (multiple-value-bind (focal-length o-od o-id o-m o-bf)
+      (close-up :focal-length focal-length :object-distance original-object-distance
+               :image-distance original-image-distance :magnification original-magnification :units units)
+    
+    (cond
+     (extension-length
+      (multiple-value-bind (focal-length n-od n-id n-m n-bf)
+         (close-up :focal-length focal-length :image-distance (+ o-id extension-length) :units units)
+       (values o-od o-id o-m o-bf n-od n-id n-m n-bf extension-length)))
+     ((not extension-length)
+      (multiple-value-bind (focal-length n-od n-id n-m n-bf)
+         (close-up :focal-length focal-length :object-distance new-object-distance
+                   :image-distance new-image-distance :magnification new-magnification :units units)
+       (values o-od o-id o-m o-bf n-od n-id n-m n-bf (- n-id o-id)))))))
+
 
 
index ffdf7e77e6575adfb2b99fcc8c6903120f4dd7b2..081e3be52d571df29658d77f1b9b228df29f6703 100644 (file)
@@ -40,6 +40,7 @@
    #:bellows-factor
    #:gaussian-lens
    #:close-up
+   #:extension-tube
    
    ;; dof.lisp
    #:print-magnification