From d6bb375789821f4e4e175465f50e77e8a6b1aaf7 Mon Sep 17 00:00:00 2001
From: Alexander Nguyen <alexander.nguyen@stud.hfm-karlsruhe.de>
Date: Sun, 09 Mar 2025 18:42:11 +0100
Subject: [PATCH] feat: implemented encoding up to 7th order

---
 sources/classes/sox-hoaencode.lisp |   90 ++++++++++++++++++++++++++++++++++++++++++--
 1 files changed, 85 insertions(+), 5 deletions(-)

diff --git a/sources/classes/sox-hoaencode.lisp b/sources/classes/sox-hoaencode.lisp
index a7541c6..def1f08 100644
--- a/sources/classes/sox-hoaencode.lisp
+++ b/sources/classes/sox-hoaencode.lisp
@@ -45,16 +45,58 @@
         (1 1)
         (2 
             (ecase (abs degree)
-                (2 (/ (sqrt 3) 6))
-                (1 (/ (sqrt 3) 3))
                 (0 1)
+                (1 (/ (sqrt 3) 3))
+                (2 (/ (sqrt 3) 6))
             ))
         (3 
             (ecase (abs degree)
-                (3 (/ (sqrt 10) 60))
-                (2 (/ (sqrt 15) 30))
-                (1 (/ (sqrt 6) 6))
                 (0 1)
+                (1 (/ (sqrt 6) 6))
+                (2 (/ (sqrt 15) 30))
+                (3 (/ (sqrt 10) 60))
+            )
+        )
+        (4 
+            (ecase (abs degree)
+                (0 1)
+                (1 (/ (sqrt 10) 10))
+                (2 (/ (sqrt 5) 30))
+                (3 (/ (sqrt 70) 420))
+                (4 (/ (sqrt 35) 840))
+            )
+        )
+        (5
+            (ecase (abs degree)
+                (0 1)
+                (1 (/ (sqrt 15) 15))
+                (2 (/ (sqrt 105) 210))
+                (3 (/ (sqrt 70) 840))
+                (4 (/ (sqrt 35) 2520))
+                (5 (/ (sqrt 14) 5040))
+            )
+        )
+        (6
+            (ecase (abs degree)
+                (0 1)
+                (1 (/ (sqrt 21) 21))
+                (2 (/ (sqrt 210) 420))
+                (3 (/ (sqrt 210) 2520))
+                (4 (/ (sqrt 7) 2520))
+                (5 (/ (sqrt 154) 55440))
+                (6 (/ (sqrt 462) 332640))
+            )
+        )
+        (7
+            (ecase (abs degree)
+                (0 1)
+                (1 (/ (sqrt 7) 14))
+                (2 (/ (sqrt 42) 252))
+                (3 (/ (sqrt 21) 1260))
+                (4 (/ (sqrt 231) 27720))
+                (5 (/ (sqrt 231) 166320))
+                (6 (/ (sqrt 6006) 4324320))
+                (7 (/ (sqrt 429) 4324320))
             )
         )
     )
@@ -99,6 +141,44 @@
                     (2 (* -15 (sin phi) (- (expt (sin phi) 2) 1)))
                     (3 (* 15 (expt (cos phi) 3)))
                 ))
+            (4 
+                (ecase (abs degree)
+                    (0 (+ (/ (* 35 (expt (cos phi) 4)) 8) (- (* 5 (expt (cos phi) 2))) 1))
+                    (1 (- (/ (* (sin (* 2 phi)) (- (/ (* 35 (expt (cos phi) 2)) 2) 10)) 2)))
+                    (2 (- (/ (* (* 15 (expt (cos phi) 2)) (- (* 7 (expt (cos phi) 2)) 6)) 2)))
+                    (3 (* 105 (expt (cos phi) 3) (sin phi) ))
+                    (4 (* 105 (expt (cos phi) 4)))
+                ))
+            (5 
+                (ecase (abs degree)
+                    (0    (/ (*     (sin phi) (+ (- (* 63 (expt (sin phi) 4)) (* 70 (expt (sin phi) 2))) 15)) 8))
+                    (1    (/ (*  15 (sin phi) (+ (- (* 21 (expt (cos phi) 4)) (* 28 (expt (cos phi) 2)))  8)) 8))
+                    (2 (- (/ (* 105 (sin phi) (+ (- (*  3 (expt (sin phi) 4)) (*  4 (expt (sin phi) 2)))  1)) 2)))
+                    (3 (- (/ (* 105 (expt (cos phi) 3) (- (* 9 (expt (cos phi) 2)) 8))                        2)))
+                    (4       (* 945 (sin phi) (expt (- (expt (sin phi) 2) 1) 2)))
+                    (5       (* 945 (expt (cos phi) 5)))
+                ))
+            (6 
+                (ecase (abs degree)
+                    (0 (+ (- (/ (* 231 (expt (cos phi) 6)) 16)) (/ (* 189 (expt (cos phi) 4)) 8) (- (/ (* 21 (expt (cos phi) 2)) 2)) 1))
+                    (1 (/ (* 21 (sin (* 2 phi)) (+ (* 33 (expt (sin phi) 4)) (- (* 30 (expt (sin phi) 2))) 5)) 16))
+                    (2 (/ (* 105 (expt (cos phi) 2) (+ (* 33 (expt (cos phi) 4)) (- (* 48 (expt (cos phi) 2))) 16)) 8))
+                    (3 (- (/ (* 315 (expt (cos phi) 3) (sin phi)) (- (* 11 (expt (cos phi) 2)) 8)) 2))
+                    (4 (- (/ (* 945 (expt (cos phi) 4) (- (* 11 (expt (cos phi) 2)) 10)) 2)))
+                    (5 (* 10395 (expt (cos phi) 5) (sin phi)))
+                    (6 (* 10395 (expt (cos phi) 6)))
+                ))
+            (7
+                (ecase (abs degree)
+                    (0    (/ (* (sin phi) (+ (* 429 (expt (sin phi) 6)) (- (* 693 (expt (sin phi) 4))) (* 315 (expt (sin phi) 2)) (- 35))) 16))
+                    (1 (- (/ (* (* 7 (cos phi)) (+ (* 429 (expt (cos phi) 6)) (- (* 792 (expt (cos phi) 4))) (* 432 (expt (cos phi) 2)) (- 64))) 16)))
+                    (2 (- (/ (* 63 (sin phi) (- (expt (sin phi) 2) 1) (+ (* 143 (expt (sin phi) 4)) (- (* 110 (expt (sin phi) 2))) 15)) 8)))
+                    (3    (/ (* (* 315 (expt (cos phi) 3)) (+ (* 143 (expt (cos phi) 4)) (- (* 220 (expt (cos phi) 2))) 80)) 8))
+                    (4    (/ (* 3465 (sin phi) (- (* 13 (expt (sin phi) 2)) 3) (expt (- (expt (sin phi) 2) 1) 2)) 2))
+                    (5 (- (/ (* 10395 (expt (cos phi) 5) (- (* 13 (expt (cos phi) 2)) 12)) 2)))
+                    (6 (* -135135 (sin phi) (expt (- (expt (sin phi) 2) 1) 3)))
+                    (7 (* 135135 (expt (cos phi) 7)))
+                ))
         )
     ))
 

--
Gitblit v1.9.1