- /
-
Psychedelic tie-dye
on 7 Oct 2024
- 12
- 250
- 1
- 0
- 905
function drawframe(f)
N = 600;
[X0, Y0] = meshgrid(linspace(-pi, pi, N));
R0 = sqrt(X0.^2 + Y0.^2);
t = 2 * pi * f / 96;
z = 1 + 0.5 * sin(2 * t);
phi = t;
X = z * (X0 * cos(phi) - Y0 * sin(phi));
Y = z * (X0 * sin(phi) + Y0 * cos(phi));
R = sqrt(X.^2 + Y.^2);
theta = atan2(Y, X);
% patterns
pattern1 = sin(5 * R + t);
pattern2 = cos(5 * theta - t);
pattern3 = sin(5 * (X * cos(t) + Y * sin(t)));
pattern4 = cos(5 * (X * sin(t) - Y * cos(t)));
pattern5 = sin(10 * (R .* theta) + t);
pattern = pattern1 + pattern2 + pattern3 + pattern4 + pattern5;
pattern = (pattern - min(pattern(:))) / (max(pattern(:)) - min(pattern(:)));
% colors
yellow = [1, 184/255, 28/255]; % Hex FF B8 1C
green = [4/255, 106/255, 56/255]; % Hex 04 6A 38
red = [190/255, 58/255, 52/255]; % Hex BE 3A 34
cmap = [green; yellow; red];
img = zeros(N, N, 3);
for i = 1:3
img(:,:,i) = interp1([0, 0.5, 1], cmap(:,i), pattern);
end
% circular mask
mask = R0 <= pi;
for i = 1:3
channel = img(:,:,i);
channel(~mask) = 1; % Set background to white
img(:,:,i) = channel;
end
% Display image
imshow(img, 'InitialMagnification', 'fit');
axis off;
% audio: https://pixabay.com/music/techno-trance-psychedelic-motion-144833/
end

