home *** CD-ROM | disk | FTP | other *** search
/ vis-ftp.cs.umass.edu / vis-ftp.cs.umass.edu.tar / vis-ftp.cs.umass.edu / pub / Software / ASCENDER / ascender.tar.Z / ascender.tar / Terrain / terrain-tools.lisp < prev   
Lisp/Scheme  |  1995-09-11  |  969b  |  23 lines

  1. (in-package 'cme)
  2.  
  3.  
  4. (defun make-registered-terrain-image (image)
  5.   "Make a new image, aligned with the given image, with each pixel
  6.   value being the terrain elevation for that backprojected pixel."
  7.   (let ((2d-transform (image-to-2d-transform image))
  8.         (3d-projection (3d-to-2d-projection (2d-world image)))
  9.         (terrain (find-terrain-model (3d-world image))))
  10.     (when (and 2d-transform 3d-projection terrain)
  11.        (let ((result (ic::make-image
  12.                       (list (image-x-dim image) (image-y-dim image))
  13.                       :element-type 'single-float)))
  14.          (dotimes (j (image-y-dim image))
  15.            (dotimes (i (image-x-dim image))
  16.               (multiple-value-bind (u v)
  17.                   (transform-point 2d-transform (float i) (float j))
  18.                 (multiple-value-bind (x y z)
  19.                     (project-to-world 3d-projection u v terrain)
  20.                     (setf (iref result i j) (or z 0.0))))))
  21.          result))))
  22.  
  23.