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 / ascendMar8.tar / UMass / BuildingFinder / func_back.lisp next >
Lisp/Scheme  |  1996-02-29  |  8KB  |  270 lines

  1. (in-package 'cme)
  2.  
  3. (DEF-FOREIGN-CALLABLE-SWITCH (GET-INTERACTOR-DFCS (:NAME "get_interactor")
  4.                               (:RETURN-TYPE C-HANDLE))
  5.                              ((OPTIONALS-USED :SIGNED-32BIT)
  6.                   (PANE C-HANDLE))
  7.                              (IF (ZEROP OPTIONALS-USED)
  8.                                  (ic::GET-INTERACTOR)
  9.                                  (ic::GET-INTERACTOR PANE)))
  10.  
  11.  
  12. ;;; External Function Definitions
  13. ;;;
  14. ;;;
  15.  
  16.  
  17. (DEF-FOREIGN-FUNCTION-SWITCH (FIND-POLYGONS (:NAME "find_polygons")
  18.                               (:RETURN-TYPE :LISP))
  19.                  (SENSITIVITY :DOUBLE-FLOAT)
  20.                  (CONSTRAIN :BOOLEAN)
  21.                  (MANUAL :BOOLEAN)
  22.                  (Lines :BOOLEAN)
  23.                  (X1 :SIGNED-32BIT)
  24.                  (Y1 :SIGNED-32BIT)
  25.                  (X2 :SIGNED-32BIT)
  26.                  (Y2 :SIGNED-32BIT)
  27.                  (K  :SIGNED-32BIT)
  28.                  (PANECHOICE C-HANDLE))
  29.  
  30. (DEF-FOREIGN-FUNCTION-SWITCH (DRAWLINES (:NAME "drawLines")
  31.                              (:RETURN-TYPE :SIGNED-32BIT))
  32.                            )
  33.  
  34. ;;(DEF-FOREIGN-FUNCTION-SWITCH (FIND-INTERSECTIONS (:NAME "computeIntersections")
  35. ;;                (:RETURN-TYPE :LISP))
  36. ;;                (LINE-FILE :STRING)
  37. ;;            )
  38.  
  39. (DEF-FOREIGN-FUNCTION-SWITCH (ACQUIRE-MODEL (:NAME "acquireModel")
  40.                 (:RETURN-TYPE :SIGNED-32BIT))
  41.                     (SENSITIVITY :DOUBLE-FLOAT)
  42.                 (CONSTRAIN :BOOLEAN)
  43.                  (RegionSize :DOUBLE-FLOAT)
  44.                 (Overlap :DOUBLE-FLOAT))
  45.  
  46.  
  47.  
  48.  
  49. (def-foreign-function-switch (set-building-parameters
  50.                      (:name "set_building_parameters")
  51.                 (:return-type :signed-32bit))
  52.                 (angle-error :double-float)
  53.                 (line-endpoint-window :double-float)
  54.                 (search-angle :double-float)
  55.                 (support-column :double-float)
  56.                 (min-line-support :double-float)
  57.                 (token-support :double-float)
  58.                 (token-window :double-float))
  59.  
  60. (defun list-project-to-world (proj u v 3d-w)
  61.   (multiple-value-bind (x y z)
  62.      (cme::project-to-world
  63.         proj
  64.         (coerce u 'double-float)
  65.         (coerce v 'double-float)
  66.         3d-w)
  67.      (vector x y z)))
  68.  
  69. (defun list-project-to-world-kp (proj u v z0)
  70.   (multiple-value-bind (x y z)
  71.      (cme::project-to-world
  72.         proj
  73.         (coerce u 'double-float)
  74.         (coerce v 'double-float)
  75.     (coerce z0 'double-float))
  76.      (vector x y z)))
  77.  
  78.  
  79.  
  80. ;;
  81. ;; Link to Lisp code to check if image support exists for a grouping
  82. ;; between two corners.
  83. ;;
  84. (def-foreign-callable-switch (image-line-support-dfcs 
  85.                 (:name "image_line_support")
  86.                 (:return-type :double-float))
  87.                  ((image c-handle)
  88.                   (u1 :double-float)
  89.                   (v1 :double-float)
  90.                   (u2 :double-float)
  91.                   (v2 :double-float)
  92.                   (width :double-float)
  93.                   (percentage :double-float))
  94.     (cme::image-line-support image u1 v1 u2 v2 width percentage))
  95.  
  96.  
  97. ;;
  98. ;;
  99. ;; Added to allow projections from 2d to 3d
  100.  
  101. (DEF-FOREIGN-CALLABLE-SWITCH (PROJECT-TO-WORLD-DFCS (:NAME "project_to_world")
  102.                               (:RETURN-TYPE C-HANDLE))
  103.                              ((ARG_0 C-HANDLE) (ARG_1 :DOUBLE-FLOAT)
  104.                               (ARG_2 :DOUBLE-FLOAT) (ARG_3 C-HANDLE))
  105.                              (CME::LIST-PROJECT-TO-WORLD ARG_0 ARG_1 ARG_2 ARG_3))
  106.  
  107. (DEF-FOREIGN-CALLABLE-SWITCH (PROJECT-TO-WORLD-KP-DFCS
  108.              (:NAME "project_to_world_KP")
  109.                               (:RETURN-TYPE C-HANDLE))
  110.                              ((ARG_0 C-HANDLE) (ARG_1 :DOUBLE-FLOAT)
  111.                               (ARG_2 :DOUBLE-FLOAT) (ARG_3 :DOUBLE-FLOAT))
  112.                              (CME::LIST-PROJECT-TO-WORLD-KP ARG_0 ARG_1 ARG_2 ARG_3))
  113.  
  114.  
  115. (DEF-FOREIGN-CALLABLE-SWITCH (LINES-FORM-CORNER-P-DFCS
  116.              (:NAME "lines_form_corner")
  117.                 (:RETURN-TYPE (:POINTER LCI::DOUBLE_2)))
  118.                 ((ARG_0 C-HANDLE)
  119.                  (ARG_1 :DOUBLE-FLOAT)
  120.                  (ARG_2 :DOUBLE-FLOAT)
  121.                  (ARG_3 :DOUBLE-FLOAT)
  122.                  (ARG_4 :DOUBLE-FLOAT)
  123.                  (ARG_5 :DOUBLE-FLOAT)
  124.                  (ARG_6 :DOUBLE-FLOAT)
  125.                  (ARG_7 :DOUBLE-FLOAT)
  126.                  (ARG_8 :DOUBLE-FLOAT)
  127.                  (ARG_9 :DOUBLE-FLOAT))
  128. (CME::LINES-FORM-CORNER-P ARG_0 ARG_1 ARG_2 ARG_3 ARG_4 ARG_5 ARG_6 ARG_7 ARG_8 ARG_9))
  129.                 
  130.  
  131. ;;
  132. ;;
  133. ;; Code to allow 3d world capture
  134. ;;
  135. ;;
  136. (DEF-FOREIGN-CALLABLE-SWITCH (GET-3D-IMAGE-WORLD-DFCS
  137.                      (:NAME "get_3d_image_world")
  138.                 (:RETURN-TYPE C-HANDLE))
  139.                  ((ARG_0 :SIGNED-32BIT))
  140.                 (CME::GET-3D-IMAGE-WORLD ARG_0))
  141.  
  142. (DEF-FOREIGN-CALLABLE-SWITCH (GET-PROJ-MATRIX-DFCS
  143.                      (:NAME "get_projection_matrix")
  144.                 (:RETURN-TYPE C-HANDLE))
  145.                  ((ARG_0 :C-HANDLE))
  146.                 (CME::GET-PROJ-MATRIX ARG_0))
  147.  
  148.  
  149. ;;
  150. ;; Extrusion of Rooftops
  151. (DEF-FOREIGN-CALLABLE-SWITCH (EXTRUDE-ROOF-CURVE-DFCS
  152.                      (:NAME "extrude_roof_curve")
  153.                 (:RETURN-TYPE C-HANDLE)) 
  154.                  ((ARG_0 :C-HANDLE))
  155.                 (CME::EXTRUDE-ROOF-CURVE ARG_0))
  156.  
  157. ;;
  158. ;; Compute Z coordinate given a point in the world
  159. ;;
  160. ;;
  161. (DEF-FOREIGN-CALLABLE-SWITCH (Z-HEIGHT-AT-XY-DFCS
  162.                 (:NAME "z_height_at_xy")
  163.                 (:RETURN-TYPE :DOUBLE-FLOAT))
  164.                 ((ARG_0    :DOUBLE-FLOAT)
  165.                 (ARG_1  :DOUBLE-FLOAT)
  166.                 (ARG_2  :DOUBLE-FLOAT)
  167.                 (ARG_3  :C-HANDLE))
  168.             (Z-HEIGHT-AT-XY ARG_0 ARG_1 ARG_2 ARG_3))
  169.                 
  170.  
  171.  
  172.  
  173. ;;
  174. ;;
  175. ;; Added to allow C Calls to the Fatlines.
  176. ;;
  177. ;;
  178. (DEF-FOREIGN-CALLABLE-SWITCH (DRAW-FAT-LINE-DFCS (:NAME "draw_fat_line")
  179.                               (:RETURN-TYPE :LISP))
  180.                              ((ARG_0 C-HANDLE) (ARG_1 :DOUBLE-FLOAT)
  181.                               (ARG_2 :DOUBLE-FLOAT) (ARG_3 :DOUBLE-FLOAT)
  182.                               (ARG_4 :DOUBLE-FLOAT) (ARG_5 :DOUBLE-FLOAT))
  183.                              (CME::NEW-DRAW-LINE ARG_0 ARG_1 ARG_2
  184.                                             ARG_3 ARG_4 ARG_5))
  185.  
  186. (DEF-FOREIGN-CALLABLE-SWITCH (DRAW-FAT-POINT-DFCS (:NAME "draw_fat_point")
  187.                               (:RETURN-TYPE :LISP))
  188.                              ((ARG_0 C-HANDLE) (ARG_1 :DOUBLE-FLOAT)
  189.                               (ARG_2 :DOUBLE-FLOAT) (ARG_3 :DOUBLE-FLOAT))
  190.                              (CME::NEW-DRAW-POINT ARG_0 ARG_1 ARG_2
  191.                                              ARG_3))
  192.  
  193. (DEF-FOREIGN-CALLABLE-SWITCH (FLUSH-DISPLAY-DFCS (:NAME "flush_display")
  194.                               (:RETURN-TYPE :LISP))
  195.                              ((ARG_0 C-HANDLE)) 
  196.                              (CME::FLUSH-DISPLAY ARG_0))
  197.  
  198. (DEF-FOREIGN-CALLABLE-SWITCH (SET-IOR-ALU-DFCS (:NAME "set_ior_alu")
  199.                               (:RETURN-TYPE :LISP))
  200.                              ((ARG_0 C-HANDLE)) 
  201.                              (cme::SET-IOR-ALU ARG_0))
  202.  
  203. (DEF-FOREIGN-CALLABLE-SWITCH (READ-TEC-PROJECTION-DFCS (:NAME "read_tec_projection")
  204.     (:RETURN-TYPE C-HANDLE))
  205.     ()
  206.     (read-tec-projection "75.hdr"))
  207.  
  208. ;;(DEF-FOREIGN-FUNCTION-SWITCH (GET-IMAGE-NAME-DFCS (:NAME "get_image_name")
  209. ;;                (:RETURN-TYPE :POINTER :CHARACTER))
  210. ;;                ()
  211. ;;                (cme::name (get-2d-world (top-image))))
  212.  
  213. (DEF-FOREIGN-CALLABLE-SWITCH (TEC-PROJECT-POINT-DFCS (:NAME "tec_project_point")    (:RETURN-TYPE C-HANDLE))
  214.     ((ARG_0 C-HANDLE)
  215.     (ARG_1 :DOUBLE-FLOAT)
  216.     (ARG_2 :DOUBLE-FLOAT)
  217.     (ARG_3 :DOUBLE-FLOAT))
  218.     (tec-project-point ARG_0 ARG_1 ARG_2 ARG_3))
  219.  
  220. (DEF-FOREIGN-CALLABLE-SWITCH (TEC-BACKPROP-POINT-DFCS (:NAME "backprop_point")
  221.     (:RETURN-TYPE C-HANDLE))
  222.     ((ARG_0 :SIGNED-32BIT)
  223.      (ARG_1 :DOUBLE-FLOAT)
  224.      (ARG_2 :DOUBLE-FLOAT))
  225.     (backproject-point ARG_0 ARG_1 ARG_2))
  226.  
  227.  
  228. ;;;\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
  229. ;;; moved here from UMass/base-image-patch.lisp, which is obsolete
  230. ;;; --BobC 2/6/96
  231.  
  232. (defun working-image (2dw)
  233.    (car (base-image-list 2dw)))
  234.  
  235. ;;
  236. ;; Now define this as a foreign function that can be called
  237. ;; from the umass 'C' routines.
  238. ;;
  239. (def-foreign-callable-switch (base-work-image (:name "working_image")
  240.                     (:return-type c-handle))
  241.                 ((arg_0 c-handle))
  242.                 (cme::working-image arg_0))
  243. ;;;//////////////////////////////////////////////////////////////////////
  244.  
  245. ;;;
  246. ;;;
  247. ;;; Load external Lisp declarations.
  248. ;;;
  249. ;;;
  250. (LOAD "$CMEHOME/radius/alv-ugv1/tec-header-input.lisp")
  251. (LOAD (full-umass-path "BuildingFinder/Lisp/orientation.lisp"))
  252. (LOAD (full-umass-path "BuildingFinder/Lisp/extrude.lisp"))
  253. (LOAD (full-umass-path "BuildingFinder/Lisp/fat-lines-patch.lisp"))
  254. (LOAD (full-umass-path "BuildingFinder/Lisp/correct_angle.lisp"))
  255. (LOAD (full-umass-path "BuildingFinder/Lisp/cvv.lisp"))
  256.  
  257.  
  258. ;;(defmethod make-extrusion ((object 3d-closed-curve) &rest initargs
  259. ;;               &key bottom-z z-size)
  260. ;; (ignore bottom-z z-size)
  261. ;;(add-object 
  262. ;; (apply 'make-extrusion-from-vertex-list
  263. ;;       (loop for vertex being the array-elements of (vertices object)
  264. ;;         collect vertex )
  265. ;;       (object-to-world-transform object)
  266. ;;       (get-3d-world object)
  267. ;;       initargs )
  268. ;;   (selected-feature-set (world object))
  269. ;;    ))
  270.