;; | ---------------------------------------------------------------------------- ;; | MI_InterP ;; | ---------------------------------------------------------------------------- ;; | Function : Interpolate Z value between two points ;; | Auguments: 'pt' - The 2D point at which Z is required ;; | 'pt1' - First point for interpolation ;; | 'pt2' - Second point for interpolation ;; | Return : The interpolated 3D point ;; | Updated : April 22, 1998 ;; | e-mail : rakesh.rao@4d-technologies.com ;; | Web : www.4d-technologies.com ;; | ---------------------------------------------------------------------------- (defun MI_InterP(pt pt1 pt2 / Z1 Z2 Z hlen1 hlen2) (setq hlen1 (distance (list (car pt1) (cadr pt1) 0.0) (list (car pt2) (cadr pt2) 0.0) ) hlen2 (distance (list (car pt) (cadr pt) 0.0) (list (car pt1) (cadr pt1) 0.0) ) Z1 (caddr pt1) Z2 (caddr pt2) ) (if (not (zerop hlen1)) (setq Z (+ Z1 (/ (* hlen2 (- Z2 Z1)) hlen1))) (setq Z (* 0.5 (+ Z1 Z2))) ) (list (car pt) (cadr pt) Z) )