;; Wave effect - sine wave displacement distortion ;; @param amplitude float [0, 100] default 10 ;; @param wavelength float [10, 500] default 50 ;; @param speed float [0, 10] default 1 ;; @param direction string default "horizontal" (define-effect wave ((amplitude 10) (wavelength 50) (speed 1) (direction "horizontal")) (let* ((w (width frame)) (h (height frame)) ;; Use _time for animation phase (phase (* (or _time 0) speed 2 pi)) ;; Calculate frequency: waves per dimension (freq (/ (if (= direction "vertical") w h) wavelength)) (axis (cond ((= direction "horizontal") "x") ((= direction "vertical") "y") (else "both"))) (coords (wave-displace w h axis freq amplitude phase))) (remap frame (coords-x coords) (coords-y coords))))