recognize vector, matrix, quaternion constructors in a better way (#630)

* recognize vector, matrix, quaternion constructors in a better way

* fix bad bug
This commit is contained in:
water111
2021-06-26 18:30:35 -04:00
committed by GitHub
parent ae2666a7c5
commit 69e24ae577
10 changed files with 415 additions and 202 deletions
@@ -772,10 +772,7 @@
;; Used lq/sq
(defun matrix-rotate-yx! ((dst matrix) (rot-y-deg float) (rot-x-deg float))
(matrix-rotate-y! dst rot-y-deg)
(let* ((t9-1 matrix-rotate-x!)
(a0-2 (new-stack-matrix0))
(a1-2 (t9-1 a0-2 rot-x-deg))
)
(let ((a1-2 (matrix-rotate-x! (new-stack-matrix0) rot-x-deg)))
(matrix*! dst a1-2 dst)
)
dst
@@ -924,13 +924,16 @@
(defun
quaternion-rotate-local-x!
((arg0 quaternion) (arg1 quaternion) (arg2 float))
(let ((t9-0 quaternion-vector-angle!)
(a0-1 (new 'stack-no-clear 'quaternion))
)
(set! (-> a0-1 vec quad) (the-as uint128 0))
(let ((a2-1 (t9-0 a0-1 (new 'static 'vector :x 1.0 :w 1.0) arg2)))
(quaternion-normalize! (quaternion*! arg0 arg1 a2-1))
(let
((a2-1
(quaternion-vector-angle!
(new-stack-quaternion0)
(new 'static 'vector :x 1.0 :w 1.0)
arg2
)
)
)
(quaternion-normalize! (quaternion*! arg0 arg1 a2-1))
)
)
@@ -939,13 +942,16 @@
(defun
quaternion-rotate-local-y!
((arg0 quaternion) (arg1 quaternion) (arg2 float))
(let ((t9-0 quaternion-vector-angle!)
(a0-1 (new 'stack-no-clear 'quaternion))
)
(set! (-> a0-1 vec quad) (the-as uint128 0))
(let ((a2-1 (t9-0 a0-1 (new 'static 'vector :y 1.0 :w 1.0) arg2)))
(quaternion-normalize! (quaternion*! arg0 arg1 a2-1))
(let
((a2-1
(quaternion-vector-angle!
(new-stack-quaternion0)
(new 'static 'vector :y 1.0 :w 1.0)
arg2
)
)
)
(quaternion-normalize! (quaternion*! arg0 arg1 a2-1))
)
)
@@ -954,58 +960,64 @@
(defun
quaternion-rotate-local-z!
((arg0 quaternion) (arg1 quaternion) (arg2 float))
(let ((t9-0 quaternion-vector-angle!)
(a0-1 (new 'stack-no-clear 'quaternion))
)
(set! (-> a0-1 vec quad) (the-as uint128 0))
(let ((a2-1 (t9-0 a0-1 (new 'static 'vector :z 1.0 :w 1.0) arg2)))
(quaternion-normalize! (quaternion*! arg0 arg1 a2-1))
(let
((a2-1
(quaternion-vector-angle!
(new-stack-quaternion0)
(new 'static 'vector :z 1.0 :w 1.0)
arg2
)
)
)
(quaternion-normalize! (quaternion*! arg0 arg1 a2-1))
)
)
;; definition for function quaternion-rotate-y!
;; Used lq/sq
(defun quaternion-rotate-y! ((arg0 quaternion) (arg1 quaternion) (arg2 float))
(let ((t9-0 quaternion-vector-angle!)
(a0-1 (new 'stack-no-clear 'quaternion))
)
(set! (-> a0-1 vec quad) (the-as uint128 0))
(let ((a1-2 (t9-0 a0-1 (new 'static 'vector :y 1.0 :w 1.0) arg2)))
(quaternion-normalize! (quaternion*! arg0 a1-2 arg1))
(let
((a1-2
(quaternion-vector-angle!
(new-stack-quaternion0)
(new 'static 'vector :y 1.0 :w 1.0)
arg2
)
)
)
(quaternion-normalize! (quaternion*! arg0 a1-2 arg1))
)
)
;; definition for function quaternion-rotate-x!
;; Used lq/sq
(defun quaternion-rotate-x! ((arg0 quaternion) (arg1 quaternion) (arg2 float))
(let ((s4-0 quaternion-vector-angle!)
(s3-0 (new 'stack-no-clear 'quaternion))
)
(set! (-> s3-0 vec quad) (the-as uint128 0))
(let* ((t9-0 vector-x-quaternion!)
(a0-1 (new-stack-vector0))
(a1-3 (s4-0 s3-0 (t9-0 a0-1 arg1) arg2))
)
(quaternion-normalize! (quaternion*! arg0 a1-3 arg1))
(let
((a1-3
(quaternion-vector-angle!
(new-stack-quaternion0)
(vector-x-quaternion! (new-stack-vector0) arg1)
arg2
)
)
)
(quaternion-normalize! (quaternion*! arg0 a1-3 arg1))
)
)
;; definition for function quaternion-rotate-z!
;; Used lq/sq
(defun quaternion-rotate-z! ((arg0 quaternion) (arg1 quaternion) (arg2 float))
(let ((s4-0 quaternion-vector-angle!)
(s3-0 (new 'stack-no-clear 'quaternion))
)
(set! (-> s3-0 vec quad) (the-as uint128 0))
(let* ((t9-0 vector-z-quaternion!)
(a0-1 (new-stack-vector0))
(a1-3 (s4-0 s3-0 (t9-0 a0-1 arg1) arg2))
)
(quaternion-normalize! (quaternion*! arg0 a1-3 arg1))
(let
((a1-3
(quaternion-vector-angle!
(new-stack-quaternion0)
(vector-z-quaternion! (new-stack-vector0) arg1)
arg2
)
)
)
(quaternion-normalize! (quaternion*! arg0 a1-3 arg1))
)
)
@@ -415,9 +415,7 @@
(set! sv-56 (t9-3 a0-5 1.0))
)
(let* ((f30-0 (vector-y-angle sv-52))
(t9-5 vector-flatten!)
(a0-7 (new-stack-vector0))
(a0-8 (t9-5 a0-7 sv-56 sv-48))
(a0-8 (vector-flatten! (new-stack-vector0) sv-56 sv-48))
(f0-0 (vector-y-angle a0-8))
(f0-1 (deg-diff f30-0 f0-0))
)
@@ -482,9 +480,7 @@
)
)
(f30-2 (vector-x-angle sv-52))
(t9-16 vector-flatten!)
(a0-19 (new-stack-vector0))
(s3-2 (t9-16 a0-19 sv-56 s3-1))
(s3-2 (vector-flatten! (new-stack-vector0) sv-56 s3-1))
(f0-15 (vector-x-angle s3-2))
(f0-21
(fmax
@@ -595,9 +591,7 @@
(set! sv-56 (t9-3 a0-3 1.0))
)
(let* ((f30-0 (vector-y-angle sv-52))
(t9-5 vector-flatten!)
(a0-5 (new-stack-vector0))
(a0-6 (t9-5 a0-5 sv-56 sv-48))
(a0-6 (vector-flatten! (new-stack-vector0) sv-56 sv-48))
(f0-0 (vector-y-angle a0-6))
(f0-1 (deg-diff f30-0 f0-0))
)
@@ -645,9 +639,7 @@
)
)
(f30-2 (vector-x-angle sv-52))
(t9-14 vector-flatten!)
(a0-14 (new-stack-vector0))
(s4-4 (t9-14 a0-14 sv-56 s4-3))
(s4-4 (vector-flatten! (new-stack-vector0) sv-56 s4-3))
(f0-14 (vector-x-angle s4-4))
(f0-20
(fmax