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