From 013a659dd79212c0da7a9a5b9c28828afca105e1 Mon Sep 17 00:00:00 2001
From: Marlon Schumacher <schumacher@hfm-karlsruhe.de>
Date: Fri, 28 Mar 2025 01:37:32 +0100
Subject: [PATCH] feat: add method for polar plotting

---
 SRR.lisp |  104 ++++++++++++++++++++-------------------------------
 1 files changed, 41 insertions(+), 63 deletions(-)

diff --git a/SRR.lisp b/SRR.lisp
index 735008b..c28301d 100644
--- a/SRR.lisp
+++ b/SRR.lisp
@@ -53,6 +53,28 @@
 
 
 ; GEN-SRR 
+    
+(defmethod! gen-srr (&rest subdivisions)
+
+            :icon 988  
+            :initvals '(nil)
+            :indoc '("subdivisions")
+            :numouts 2
+            (let ((valuelist (mat-trans
+                   (loop for sub in subdivisions 
+                         collect (multiple-value-list (gen-wave1 sub))))))
+
+              
+              (values (caar valuelist) 
+                      (om* (expt 0.5 (length subdivisions)) 
+                           (om+ (length subdivisions) ;(apply 'om+ (second valuelist)))))
+                                (loop for i from 0 to (1- (length (car (second valuelist)))) 
+                                      collect (reduce '+  (loop for list in (second valuelist) collect (nth i list)))
+                                      ))  
+                           )
+                      )
+              )
+            )
 
 ; legacy method
 
@@ -71,70 +93,20 @@
             )
     )
   )
-    
-(defmethod! gen-srr (&rest subdivisions)
-
-            :icon 988  
-            :initvals '(nil)
-            :indoc '("subdivisions")
-            :numouts 2
-            (let ((valuelist (mat-trans
-                   (loop for sub in subdivisions 
-                         collect (multiple-value-list (gen-wave1 sub :sampling-factor 2))))))
-             ; (print valuelist)
-              
-              (values (caar valuelist) 
-                      (om* (expt 0.5 (length subdivisions)) 
-                           (om+ (length subdivisions) ;(apply 'om+ (second valuelist)))))
-                                (loop for i from 0 to (1- (length (car (second valuelist)))) 
-                                      collect (reduce '+  (loop for list in (second valuelist) collect (nth i list)))
-                                      ))  
-                           )
-                      )
-              )
-            )
 
 
-  (let* ((pointlist1 (multiple-value-list (gen-wave1 subdivision1)))
-         (pointlist2 (multiple-value-list (gen-wave1 subdivision2)))
-         )
-    (values (first pointlist1)
-            (om* 0.25 (om+ 2 (om+ (second pointlist1) (second pointlist2))))
-            )
+; polar-plot
+
+(defmethod! polar-plot ((srr bpf))
+  (let* ((xpoints (x-points srr))
+         (ypoints (y-points srr))
+         (x-factor (/ 360.0 (* 2 pi)))
+         (polar-values (multiple-value-list (ad->xy (om* x-factor xpoints) ypoints))))
+    (simple-bpf-from-list (first polar-values) (second polar-values) 'bpc (decimals srr))
     )
   )
-
-(loop for i from 0 to (1- (length (car *testwave*))) 
-      collect (reduce '+  (loop for list in *testwave* collect (nth i list)))
-      )
-
-(loop for i from 0 to (1- (length (car *testwave*))) 
-      collect ;(dx->x (nth i (car *testwave*)) (loop for list in (cdr *testwave*) collect (nth i list)))
-        (reduce '+  (loop for list in *testwave* collect (nth i list)))
-      )
-
-(loop for list in *testwave* collect (nth 0 list))
-
-*testwave*
-
-(nth 0 (car *testwave*))
-(dx->x 
-(cdr *testwave*)
-
-(defparameter *testwave* '((1.0 -0.98999 0.96017 -0.91113 0.84385 -0.75969 0.66032 -0.54773 0.42418 -0.29214 0.15425 -0.01328 -0.12796) (1.0 0.07074 -0.98999 -0.2108 0.96017 0.34664 -0.91113 -0.47554 0.84385 0.59492 -0.75969 -0.7024 0.66032) (1.0 -0.41615 -0.65364 0.96017 -0.1455 -0.83907 0.84385 0.13674 -0.95766 0.66032 0.40808 -0.99996 0.42418)))
-                                      
-
-(om+ '((1 2) (5 6)))
-(om+ '(1 2) '(5 6) '(5 6))
-(om+ '((1.0 -0.98999 0.96017 -0.91113 0.84385 -0.75969 0.66032 -0.54773 0.42418 -0.29214 0.15425 -0.01328 -0.12796) (1.0 0.07074 -0.98999 -0.2108 0.96017 0.34664 -0.91113 -0.47554 0.84385 0.59492 -0.75969 -0.7024 0.66032) (1.0 -0.41615 -0.65364 0.96017 -0.1455 -0.83907 0.84385 0.13674 -0.95766 0.66032 0.40808 -0.99996 0.42418)))
-(apply 'om+ '((1.0 -0.98999 0.96017 -0.91113 0.84385 -0.75969 0.66032 -0.54773 0.42418 -0.29214 0.15425 -0.01328 -0.12796) (1.0 0.07074 -0.98999 -0.2108 0.96017 0.34664 -0.91113 -0.47554 0.84385 0.59492 -0.75969 -0.7024 0.66032) (1.0 -0.41615 -0.65364 0.96017 -0.1455 -0.83907 0.84385 0.13674 -0.95766 0.66032 0.40808 -0.99996 0.42418)))
-
-(apply 'om+ '((1 2) (5 6)))
-
-(mapcar
- #'(lambda (x) (om+ 2 x))
- '((1 2) (5 6)))
-
+    
+       
 
 ; output the object or the point lists
 ; optionally output cartesian or polar representation
@@ -156,11 +128,17 @@
                             (num-b (car b)) (den-b (cdr b)))
                         (< (* num-a (float den-b)) (* num-b (float den-a))))))
 
-   ; (loop for (a . b) in fractions collect
-   ;       (/ a b)
-   ;       )
+    (loop for (a . b) in fractions collect
+          (/ a b)
+          )
     ))
 
+(defparameter *farey-seq* '(0 1/5 1/4 1/3 2/5 1/2 3/5 2/3 3/4 4/5 1))
+
+(loop for item in *farey-seq* 
+        collect (unless (zerop item)
+                  (/ 1 item)))
+
 ;; Example usage
 (print (farey-sequence 5))
 (farey-sequence 5)

--
Gitblit v1.9.1