for (let x = 0; x < width; x += tileSize) {
for (let y = 0; y < height; y += tileSize) {
drawFinalEyeVariation(x, y, tileSize);
function drawFinalEyeVariation(x, y, size) {
translate(x + size / 2, y + size / 2);
let sides = int(random(5, 8));
let outerColor = color(random(100, 255), random(100, 255), random(100, 255));
for (let i = 0; i < sides; i++) {
let angle = TWO_PI / sides * i - HALF_PI;
let radius = size * random(0.4, 0.5);
vertex(cos(angle) * radius, sin(angle) * radius);
let irisColor1 = color(random(50, 200), random(50, 200), random(200, 255));
let irisColor2 = color(random(200, 255), random(100, 200), random(50, 200));
for (let r = size * 0.2; r > 0; r -= size * 0.04) {
let lerpFactor = map(r, size * 0.2, 0, 0, 1);
fill(lerpColor(irisColor1, irisColor2, lerpFactor));
let pupilSides = int(random(4, 6));
for (let i = 0; i < pupilSides; i++) {
let angle = TWO_PI / pupilSides * i - HALF_PI;
let radius = size * (i % 2 === 0 ? 0.05 : 0.08);
vertex(cos(angle) * radius, sin(angle) * radius);
strokeWeight(random(1, 3));
for (let i = -size * 0.5; i <= size * 0.5; i += size / 10) {
let yOffset = sin(i * TWO_PI / size) * size * 0.2;
vertex(xOffset, yOffset);
if (key === 'k' || key === 'K') {
saveCanvas('eye_pattern', 'png');