;;-*-Lisp-*- (in-package goal) ;; definition for method 19 of type bounding-box (defmethod inside-xyz? ((this bounding-box) (arg0 vector)) "Is the point in the box?" (and (< (-> this min x) (-> arg0 x)) (< (-> this min y) (-> arg0 y)) (< (-> this min z) (-> arg0 z)) (< (-> arg0 x) (-> this max x)) (< (-> arg0 y) (-> this max y)) (< (-> arg0 z) (-> this max z)) ) ) ;; definition for method 20 of type bounding-box (defmethod inside-xz? ((this bounding-box) (arg0 vector)) "Is the point in the box? Check xz only." (and (< (-> this min x) (-> arg0 x)) (< (-> this min z) (-> arg0 z)) (< (-> arg0 x) (-> this max x)) (< (-> arg0 z) (-> this max z)) ) ) ;; definition for function box-vector-enside? (defun box-vector-enside? ((arg0 bounding-box) (arg1 vector)) "Is the point in the box? On the edge doesn't count." (and (< (-> arg0 min x) (-> arg1 x)) (< (-> arg0 min y) (-> arg1 y)) (< (-> arg0 min z) (-> arg1 z)) (< (-> arg1 x) (-> arg0 max x)) (< (-> arg1 y) (-> arg0 max y)) (< (-> arg1 z) (-> arg0 max z)) ) ) ;; definition for function box-vector-inside? (defun box-vector-inside? ((arg0 bounding-box) (arg1 vector)) "Is the point in the box? On the edge counts." (and (>= (-> arg1 x) (-> arg0 min x)) (>= (-> arg1 y) (-> arg0 min y)) (>= (-> arg1 z) (-> arg0 min z)) (>= (-> arg0 max x) (-> arg1 x)) (>= (-> arg0 max y) (-> arg1 y)) (>= (-> arg0 max z) (-> arg1 z)) ) ) ;; definition for method 13 of type bounding-box ;; WARN: Return type mismatch int vs none. (defmethod set-from-point-offset! ((this bounding-box) (arg0 vector) (arg1 vector)) "Set to the smallest box containing arg0, (arg0 + arg1)" (rlet ((vf0 :class vf) (vf1 :class vf) (vf2 :class vf) (vf3 :class vf) (vf4 :class vf) (vf5 :class vf) ) (init-vf0-vector) (.lvf vf3 (&-> arg1 quad)) (.lvf vf4 (&-> arg0 quad)) (.add.vf vf5 vf4 vf3) (.min.vf vf1 vf4 vf5) (.max.vf vf2 vf4 vf5) (.mov.vf vf1 vf0 :mask #b1000) (.mov.vf vf2 vf0 :mask #b1000) (.svf (&-> this min quad) vf1) (.svf (&-> this max quad) vf2) 0 (none) ) ) ;; definition for method 11 of type bounding-box ;; WARN: Return type mismatch int vs none. (defmethod add-point! ((this bounding-box) (arg0 vector)) "Expand the box as needed to contain the given point." (rlet ((vf1 :class vf) (vf2 :class vf) (vf3 :class vf) ) (.lvf vf1 (&-> this min quad)) (.lvf vf2 (&-> this max quad)) (.lvf vf3 (&-> arg0 quad)) (.min.vf vf1 vf1 vf3) (.max.vf vf2 vf2 vf3) (.svf (&-> this min quad) vf1) (.svf (&-> this max quad) vf2) 0 (none) ) ) ;; definition for method 10 of type bounding-box (defmethod add-box! ((this bounding-box) (arg0 bounding-box)) "Expand the box as needed to contain the given box." (rlet ((vf1 :class vf) (vf2 :class vf) (vf3 :class vf) (vf4 :class vf) ) (.lvf vf1 (&-> this min quad)) (.lvf vf2 (&-> this max quad)) (.lvf vf3 (&-> arg0 min quad)) (.lvf vf4 (&-> arg0 max quad)) (.min.vf vf1 vf1 vf3) (.max.vf vf2 vf2 vf4) (.svf (&-> this min quad) vf1) (.svf (&-> this max quad) vf2) 0 ) ) ;; definition for method 15 of type bounding-box ;; INFO: Used lq/sq ;; WARN: Return type mismatch int vs none. (defmethod set-to-point! ((this bounding-box) (arg0 vector)) "Set the box to be a single point." (set! (-> this min quad) (-> arg0 quad)) (set! (-> this max quad) (-> arg0 quad)) 0 (none) ) ;; definition for method 14 of type bounding-box (defmethod set-from-point-offset-pad! ((this bounding-box) (arg0 vector) (arg1 vector) (arg2 float)) "Set the box to contain arg0, arg0 + offset, with some padding." (rlet ((vf0 :class vf) (vf1 :class vf) (vf2 :class vf) (vf3 :class vf) (vf4 :class vf) (vf5 :class vf) (vf6 :class vf) ) (init-vf0-vector) (.lvf vf4 (&-> arg1 quad)) (.lvf vf5 (&-> arg0 quad)) (.mov vf1 arg2) (.add.vf vf6 vf5 vf4) (.min.vf vf2 vf5 vf6) (.max.vf vf3 vf5 vf6) (.add.x.vf vf3 vf3 vf1 :mask #b111) (.sub.x.vf vf2 vf2 vf1 :mask #b111) (.mov.vf vf2 vf0 :mask #b1000) (.mov.vf vf3 vf0 :mask #b1000) (.svf (&-> this min quad) vf2) (.svf (&-> this max quad) vf3) 0 ) ) ;; definition for method 16 of type bounding-box ;; WARN: Return type mismatch int vs none. (defmethod set-from-sphere! ((this bounding-box) (arg0 sphere)) "Set the box to contain a single sphere." (rlet ((vf0 :class vf) (vf1 :class vf) (vf2 :class vf) (vf3 :class vf) ) (init-vf0-vector) (.lvf vf1 (&-> arg0 quad)) (.sub.w.vf vf2 vf1 vf1 :mask #b111) (.add.w.vf vf3 vf1 vf1 :mask #b111) (.mov.vf vf2 vf0 :mask #b1000) (.mov.vf vf3 vf0 :mask #b1000) (.svf (&-> this min quad) vf2) (.svf (&-> this max quad) vf3) 0 (none) ) ) ;; definition for method 17 of type bounding-box ;; ERROR: function was not converted to expressions. Cannot decompile. ;; definition for method 9 of type bounding-box ;; ERROR: function was not converted to expressions. Cannot decompile. ;; definition for method 18 of type bounding-box (defmethod get-bounding-sphere ((this bounding-box) (arg0 vector)) "Get a bounding sphere for a bounding box." (let* ((a1-2 (vector-! (new 'stack-no-clear 'vector) (-> this max) (-> this min))) (a0-3 (vector-float*! (new 'stack-no-clear 'vector) a1-2 0.5)) ) (vector+! arg0 (-> this min) a0-3) (set! (-> arg0 w) (vector-length a0-3)) ) arg0 ) ;; definition of type liang-barsky-line-clip-params (deftype liang-barsky-line-clip-params (structure) ((te float) (tl float) ) ) ;; definition for method 3 of type liang-barsky-line-clip-params (defmethod inspect ((this liang-barsky-line-clip-params)) (when (not this) (set! this this) (goto cfg-4) ) (format #t "[~8x] ~A~%" this 'liang-barsky-line-clip-params) (format #t "~1Tte: ~f~%" (-> this te)) (format #t "~1Ttl: ~f~%" (-> this tl)) (label cfg-4) this ) ;; definition for function liang-barsky-line-clipt (defun liang-barsky-line-clipt ((arg0 liang-barsky-line-clip-params) (arg1 float) (arg2 float)) "Clip test in 1 dimension. Is arg1 in arg2?" (cond ((< 0.0 arg1) (let ((f0-2 (/ arg2 arg1))) (if (< (-> arg0 tl) f0-2) (return #f) ) (if (< (-> arg0 te) f0-2) (set! (-> arg0 te) f0-2) ) ) ) ((< arg1 0.0) (let ((f0-5 (/ arg2 arg1))) (if (< f0-5 (-> arg0 te)) (return #f) ) (if (< f0-5 (-> arg0 tl)) (set! (-> arg0 tl) f0-5) ) ) ) (else (if (< 0.0 arg2) (return #f) ) ) ) #t ) ;; definition for method 12 of type bounding-box ;; WARN: disable def twice: 23. This may happen when a cond (no else) is nested inside of another conditional, but it should be rare. (defmethod intersects-line-segment? ((this bounding-box) (arg0 vector) (arg1 vector)) "Check intersection in xz plane, using liang-barsky. Not sure if this actually a useful check or not..." (let ((f28-0 (- (-> arg1 x) (-> arg0 x))) (f30-0 (- (-> arg1 z) (-> arg0 z))) ) (cond ((and (= f28-0 0.0) (= f30-0 0.0)) (let ((f1-2 (-> arg0 x)) (f0-4 (-> arg0 z)) ) (and (>= f1-2 (-> this min x)) (>= (-> this max x) f1-2) (>= f0-4 (-> this min z)) (>= (-> this max z) f0-4)) ) ) (else (let ((s4-0 (new 'stack-no-clear 'liang-barsky-line-clip-params))) (set! (-> s4-0 te) 0.0) (set! (-> s4-0 tl) 1.0) (and (liang-barsky-line-clipt s4-0 f28-0 (- (-> this min x) (-> arg0 x))) (liang-barsky-line-clipt s4-0 (- f28-0) (- (-> arg0 x) (-> this max x))) (liang-barsky-line-clipt s4-0 f30-0 (- (-> this min z) (-> arg0 z))) (liang-barsky-line-clipt s4-0 (- f30-0) (- (-> arg0 z) (-> this max z))) ) ) ) ) ) )