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
/
BuildingFinder
/
functions.lisp~
< prev
next >
Wrap
Lisp/Scheme
|
1994-01-24
|
8KB
|
260 lines
(in-package 'cme)
(DEF-FOREIGN-CALLABLE-SWITCH (GET-INTERACTOR-DFCS (:NAME "get_interactor")
(:RETURN-TYPE C-HANDLE))
((OPTIONALS-USED :SIGNED-32BIT)
(PANE C-HANDLE))
(IF (ZEROP OPTIONALS-USED)
(ic::GET-INTERACTOR)
(ic::GET-INTERACTOR PANE)))
;;; External Function Definitions
;;;
;;;
(DEF-FOREIGN-FUNCTION-SWITCH (FIND-POLYGONS (:NAME "find_polygons")
(:RETURN-TYPE :LISP))
(SENSITIVITY :DOUBLE-FLOAT)
(CONSTRAIN :BOOLEAN)
(MANUAL :BOOLEAN)
(2.5DFILES :BOOLEAN)
(X1 :SIGNED-32BIT)
(Y1 :SIGNED-32BIT)
(X2 :SIGNED-32BIT)
(Y2 :SIGNED-32BIT)
(K :SIGNED-32BIT)
(PANECHOICE C-HANDLE))
(DEF-FOREIGN-FUNCTION-SWITCH (DRAWLINES (:NAME "drawLines")
(:RETURN-TYPE :SIGNED-32BIT))
)
(DEF-FOREIGN-FUNCTION-SWITCH (FIND-INTERSECTIONS (:NAME "computeIntersections")
(:RETURN-TYPE :LISP))
(LINE-FILE :STRING)
)
(DEF-FOREIGN-FUNCTION-SWITCH (ACQUIRE-MODEL (:NAME "acquireModel")
(:RETURN-TYPE :SIGNED-32BIT))
(SENSITIVITY :DOUBLE-FLOAT)
(CONSTRAIN :BOOLEAN)
(RegionSize :DOUBLE-FLOAT)
(Overlap :DOUBLE-FLOAT))
(def-foreign-function-switch (set-building-parameters
(:name "set_building_parameters")
(:return-type :signed-32bit))
(angle-error :double-float)
(line-endpoint-window :double-float)
(search-angle :double-float)
(support-column :double-float)
(min-line-support :double-float)
(token-support :double-float)
(token-window :double-float))
(def-foreign-function-switch (draw-corner-data (:name "drawcorners")
(:return-type :signed-32bit))
(file :STRING))
(DEF-FOREIGN-FUNCTION-SWITCH (DRAWPOINTS (:NAME "drawcorners")
(:RETURN-TYPE :SIGNED-32BIT))
(filename :string))
(defun list-project-to-world (proj u v 3d-w)
(multiple-value-bind (x y z)
(cme::project-to-world
proj
(coerce u 'double-float)
(coerce v 'double-float)
3d-w)
(vector x y z)))
(defun list-project-to-world-kp (proj u v z0)
(multiple-value-bind (x y z)
(cme::project-to-world
proj
(coerce u 'double-float)
(coerce v 'double-float)
(coerce z0 'double-float))
(vector x y z)))
;;
;; Link to Lisp code to check if image support exists for a grouping
;; between two corners.
;;
(def-foreign-callable-switch (image-line-support-dfcs
(:name "image_line_support")
(:return-type :double-float))
((image c-handle)
(u1 :double-float)
(v1 :double-float)
(u2 :double-float)
(v2 :double-float)
(width :double-float)
(percentage :double-float))
(cme::image-line-support image u1 v1 u2 v2 width percentage))
;;
;;
;; Added to allow projections from 2d to 3d
(DEF-FOREIGN-CALLABLE-SWITCH (PROJECT-TO-WORLD-DFCS (:NAME "project_to_world")
(:RETURN-TYPE C-HANDLE))
((ARG_0 C-HANDLE) (ARG_1 :DOUBLE-FLOAT)
(ARG_2 :DOUBLE-FLOAT) (ARG_3 C-HANDLE))
(CME::LIST-PROJECT-TO-WORLD ARG_0 ARG_1 ARG_2 ARG_3))
(DEF-FOREIGN-CALLABLE-SWITCH (PROJECT-TO-WORLD-KP-DFCS
(:NAME "project_to_world_KP")
(:RETURN-TYPE C-HANDLE))
((ARG_0 C-HANDLE) (ARG_1 :DOUBLE-FLOAT)
(ARG_2 :DOUBLE-FLOAT) (ARG_3 :DOUBLE-FLOAT))
(CME::LIST-PROJECT-TO-WORLD-KP ARG_0 ARG_1 ARG_2 ARG_3))
(DEF-FOREIGN-CALLABLE-SWITCH (LINES-FORM-CORNER-P-DFCS
(:NAME "lines_form_corner")
(:RETURN-TYPE (:POINTER LCI::DOUBLE_2)))
((ARG_0 C-HANDLE)
(ARG_1 :DOUBLE-FLOAT)
(ARG_2 :DOUBLE-FLOAT)
(ARG_3 :DOUBLE-FLOAT)
(ARG_4 :DOUBLE-FLOAT)
(ARG_5 :DOUBLE-FLOAT)
(ARG_6 :DOUBLE-FLOAT)
(ARG_7 :DOUBLE-FLOAT)
(ARG_8 :DOUBLE-FLOAT)
(ARG_9 :DOUBLE-FLOAT))
(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))
;;
;;
;; Code to allow 3d world capture
;;
;;
(DEF-FOREIGN-CALLABLE-SWITCH (GET-3D-IMAGE-WORLD-DFCS
(:NAME "get_3d_image_world")
(:RETURN-TYPE C-HANDLE))
((ARG_0 :SIGNED-32BIT))
(CME::GET-3D-IMAGE-WORLD ARG_0))
(DEF-FOREIGN-CALLABLE-SWITCH (GET-PROJ-MATRIX-DFCS
(:NAME "get_projection_matrix")
(:RETURN-TYPE C-HANDLE))
((ARG_0 :C-HANDLE))
(CME::GET-PROJ-MATRIX ARG_0))
;;
;; Extrusion of Rooftops
(DEF-FOREIGN-CALLABLE-SWITCH (EXTRUDE-ROOF-CURVE-DFCS
(:NAME "extrude_roof_curve")
(:RETURN-TYPE C-HANDLE))
((ARG_0 :C-HANDLE))
(CME::EXTRUDE-ROOF-CURVE ARG_0))
;;
;; Compute Z coordinate given a point in the world
;;
;;
(DEF-FOREIGN-CALLABLE-SWITCH (Z-HEIGHT-AT-XY-DFCS
(:NAME "z_height_at_xy")
(:RETURN-TYPE :DOUBLE-FLOAT))
((ARG_0 :DOUBLE-FLOAT)
(ARG_1 :DOUBLE-FLOAT)
(ARG_2 :DOUBLE-FLOAT)
(ARG_3 :C-HANDLE))
(Z-HEIGHT-AT-XY ARG_0 ARG_1 ARG_2 ARG_3))
;;
;;
;; Added to allow C Calls to the Fatlines.
;;
;;
(DEF-FOREIGN-CALLABLE-SWITCH (DRAW-FAT-LINE-DFCS (:NAME "draw_fat_line")
(:RETURN-TYPE :LISP))
((ARG_0 C-HANDLE) (ARG_1 :DOUBLE-FLOAT)
(ARG_2 :DOUBLE-FLOAT) (ARG_3 :DOUBLE-FLOAT)
(ARG_4 :DOUBLE-FLOAT) (ARG_5 :DOUBLE-FLOAT))
(CME::NEW-DRAW-LINE ARG_0 ARG_1 ARG_2
ARG_3 ARG_4 ARG_5))
(DEF-FOREIGN-CALLABLE-SWITCH (DRAW-FAT-POINT-DFCS (:NAME "draw_fat_point")
(:RETURN-TYPE :LISP))
((ARG_0 C-HANDLE) (ARG_1 :DOUBLE-FLOAT)
(ARG_2 :DOUBLE-FLOAT) (ARG_3 :DOUBLE-FLOAT))
(CME::NEW-DRAW-POINT ARG_0 ARG_1 ARG_2
ARG_3))
(DEF-FOREIGN-CALLABLE-SWITCH (FLUSH-DISPLAY-DFCS (:NAME "flush_display")
(:RETURN-TYPE :LISP))
((ARG_0 C-HANDLE))
(CME::FLUSH-DISPLAY ARG_0))
(DEF-FOREIGN-CALLABLE-SWITCH (SET-IOR-ALU-DFCS (:NAME "set_ior_alu")
(:RETURN-TYPE :LISP))
((ARG_0 C-HANDLE))
(cme::SET-IOR-ALU ARG_0))
(DEF-FOREIGN-CALLABLE-SWITCH (READ-TEC-PROJECTION-DFCS (:NAME "read_tec_projection")
(:RETURN-TYPE C-HANDLE))
()
(read-tec-projection "75.hdr"))
;;(DEF-FOREIGN-FUNCTION-SWITCH (GET-IMAGE-NAME-DFCS (:NAME "get_image_name")
;; (:RETURN-TYPE :POINTER :CHARACTER))
;; ()
;; (cme::name (get-2d-world (top-image))))
(DEF-FOREIGN-CALLABLE-SWITCH (TEC-PROJECT-POINT-DFCS (:NAME "tec_project_point") (:RETURN-TYPE C-HANDLE))
((ARG_0 C-HANDLE)
(ARG_1 :DOUBLE-FLOAT)
(ARG_2 :DOUBLE-FLOAT)
(ARG_3 :DOUBLE-FLOAT))
(tec-project-point ARG_0 ARG_1 ARG_2 ARG_3))
(DEF-FOREIGN-CALLABLE-SWITCH (TEC-BACKPROP-POINT-DFCS (:NAME "backprop_point")
(:RETURN-TYPE C-HANDLE))
((ARG_0 :SIGNED-32BIT)
(ARG_1 :DOUBLE-FLOAT)
(ARG_2 :DOUBLE-FLOAT))
(backproject-point ARG_0 ARG_1 ARG_2))
;;;
;;;
;;; Load external Lisp declarations.
;;;
;;;
(LOAD "$CMEHOME/radius/alv-ugv1/tec-header-input.lisp")
(LOAD (full-umass-path "BuildingFinder/Lisp/orientation.lisp"))
(LOAD (full-umass-path "BuildingFinder/Lisp/extrude.lisp"))
(LOAD (full-umass-path "BuildingFinder/Lisp/fat-lines-patch.lisp"))
(LOAD (full-umass-path "BuildingFinder/Lisp/correct_angle.lisp"))
(LOAD (full-umass-path "BuildingFinder/Lisp/cvv.lisp"))
;;(defmethod make-extrusion ((object 3d-closed-curve) &rest initargs
;; &key bottom-z z-size)
;; (ignore bottom-z z-size)
;;(add-object
;; (apply 'make-extrusion-from-vertex-list
;; (loop for vertex being the array-elements of (vertices object)
;; collect vertex )
;; (object-to-world-transform object)
;; (get-3d-world object)
;; initargs )
;; (selected-feature-set (world object))
;; ))