;;-*-Lisp-*- (in-package goal) ;; definition for method 2 of type transform (defmethod print transform ((obj transform)) (format #t "# obj trans x) (-> obj trans y) (-> obj trans z) (-> obj trans w) ) (format #t "~T~Trot: ~F ~F ~F ~F ~%" (-> obj rot x) (-> obj rot y) (-> obj rot z) (-> obj rot w) ) (format #t "~T~Tscale:~F ~F ~F ~F>" (-> obj scale x) (-> obj scale y) (-> obj scale z) (-> obj scale w) ) obj ) ;; definition for method 0 of type trs (defmethod new trs ((allocation symbol) (type-to-make type)) (let ((obj (object-new allocation type-to-make (the-as int (-> type-to-make size))) ) ) (set! (-> obj trans w) 1.0) (set! (-> obj rot w) 1.0) (vector-identity! (-> obj scale)) obj ) ) ;; definition for function transform-matrix-calc! ;; Used lq/sq (defun transform-matrix-calc! ((tf transform) (dst-mat matrix)) (let ((s4-0 (new-stack-matrix0)) (s3-0 (new-stack-matrix0)) ) (matrix-identity! dst-mat) (matrix-translate! dst-mat (-> tf trans)) (matrix-rotate-y! s4-0 (-> tf rot y)) (matrix*! s3-0 s4-0 dst-mat) (matrix-rotate-x! s4-0 (-> tf rot x)) (matrix*! dst-mat s4-0 s3-0) (matrix-rotate-z! s4-0 (-> tf rot z)) (matrix*! s3-0 s4-0 dst-mat) (matrix-scale! s4-0 (-> tf scale)) (matrix*! dst-mat s4-0 s3-0) ) ) ;; definition for function transform-matrix-parent-calc! ;; Used lq/sq (defun transform-matrix-parent-calc! ((tf transform) (dst-mat matrix) (inv-scale vector)) (let ((s4-0 (new-stack-matrix0)) (s3-0 (new-stack-matrix0)) ) (matrix-identity! s3-0) (matrix-translate! s3-0 (-> tf trans)) (matrix-inv-scale! s4-0 inv-scale) (matrix*! dst-mat s4-0 s3-0) (matrix-rotate-y! s4-0 (-> tf rot y)) (matrix*! s3-0 s4-0 dst-mat) (matrix-rotate-x! s4-0 (-> tf rot x)) (matrix*! dst-mat s4-0 s3-0) (matrix-rotate-z! s4-0 (-> tf rot z)) (matrix*! s3-0 s4-0 dst-mat) (matrix-scale! s4-0 (-> tf scale)) (matrix*! dst-mat s4-0 s3-0) ) ) ;; definition for function trs-matrix-calc! (defun trs-matrix-calc! ((tf trs) (dst-mat matrix)) (transform-matrix-calc! (the-as transform (-> tf trans)) dst-mat) )