;; Kaleidoscope effect - mandala-like symmetry patterns ;; @param segments int [3, 16] default 6 ;; @param rotation float [0, 360] default 0 ;; @param rotation_speed float [-180, 180] default 0 ;; @param center_x float [0, 1] default 0.5 ;; @param center_y float [0, 1] default 0.5 ;; @param zoom float [0.5, 3] default 1 (define-effect kaleidoscope ((segments 6) (rotation 0) (rotation_speed 0) (center_x 0.5) (center_y 0.5) (zoom 1)) (let* ((w (width frame)) (h (height frame)) (cx (* w center_x)) (cy (* h center_y)) ;; Total rotation including time-based animation (total_rot (+ rotation (* rotation_speed (or _time 0)))) (coords (kaleidoscope-displace w h segments total_rot cx cy zoom))) (remap frame (coords-x coords) (coords-y coords))))