数学艺术动画

📜 源代码解析

原始紧凑代码

a=(x,y,d=mag(k=(4+sin(y*2-t)*3)*cos(x/29),e=y/8-13))=>point((q=3*sin(k*2)+.3/k+sin(y/25)*k*(9+4*sin(e*9-d*3+t*2)))+30*cos(c=d-t)+200,q*sin(c)+d*39-220) t=0,draw=$=>{t||createCanvas(w=400,w);background(9).stroke(w,96);for(t+=PI/240,i=1e4;i--;)a(i,i/235)}

这是一个极简的"代码高尔夫"作品,用最少的代码创造最大的视觉效果。

格式化后的代码

// 主要的艺术函数
function a(x, y) {
    // 计算复杂的数学表达式
    let k = (4 + sin(y * 2 - t) * 3) * cos(x / 29);
    let e = y / 8 - 13;
    let d = mag(k, e);
    
    // 计算点的位置
    let q = 3 * sin(k * 2) + 0.3 / k + sin(y / 25) * k * (9 + 4 * sin(e * 9 - d * 3 + t * 2));
    let c = d - t;
    
    // 绘制点
    point(
        q + 30 * cos(c) + 200,
        q * sin(c) + d * 39 - 220
    );
}

function draw() {
    background(9);      // 深色背景
    stroke(255, 96);    // 半透明白色描边
    t += PI / 240;      // 时间增量
    
    // 绘制10000个点
    for (let i = 0; i < 10000; i++) {
        a(i, i / 235);
    }
}

数学原理解释

核心变换

k = (4 + sin(y*2-t)*3) * cos(x/29)

创建基于位置和时间的波动系数

距离计算

d = mag(k, e)

计算向量(k,e)的模长,e = y/8-13

复合函数

q = 3*sin(k*2) + 0.3/k + sin(y/25)*k*(...)

多层三角函数嵌套,创造复杂图案

坐标映射

x = q + 30*cos(d-t) + 200

y = q*sin(d-t) + d*39 - 220

将计算结果映射到画布坐标

视觉效果说明

这是一个基于数学公式的动态艺术作品

使用三角函数和复杂的数学表达式生成美丽的图案