在不少艺术生的印象里,一提起“三角函数”,脑海里蹦出来的还是高中课本里那根死板的 $y = \sin(x)$ 波浪线,或者几何画板里单调的圆形轨迹。
坦白讲——如果三角函数只能画波浪线,它根本不配被称为创意编程的“灵魂画笔”。
在艺术编程殿堂 OpenProcessing(openprocessing.org) 上,那些常年霸占 Explore 热门榜首、被 MoMA 或佳士得数字艺术展青睐的生成杰作,背后往往藏着一个让外行人难以置信的秘密:
艺术家的降维打击
很多看起来如同动用了好莱坞级 3D 渲染器、甚至模拟了深空流体动力学的神作,其内核没有复杂的物理引擎,没有庞大的网格模型,仅仅是几行三角函数的高阶相位与空间映射。
今天,我们彻底抛开教科书式的枯燥讲解,直接带你拆解 OpenProcessing 上最震撼、最具审美价值的 4 大神级三角函数视觉流派。
01 奇异吸引子:仅凭 2 行代码,雕刻深空星云与流体薄纱
如果评选生成艺术史上“以极简代码创造极繁之美”的巅峰,克利福德与德容吸引子(Clifford / De Jong Attractor) 绝对名列前茅。
你看到的不是由 3D 软件渲染的丝绸,而是在完全没有 Z 轴的二维平面上,由数百万个半透明微粒迭代碰撞出的拓扑折叠:

▲ 纯数学实时渲染:120万个微粒在三角函数力场中累积出的深空薄纱(Clifford Attractor)
令人战栗的地方在于它的数学实现——核心公式居然只有这两句:
x_next = sin(a * y) + c * cos(a * x);
y_next = sin(b * x) + d * cos(b * y);
为什么它会拥有令人惊叹的流体质感?
因为三角函数的非线性周期折叠,会把原本平直的空间无限拉伸、扭曲并折叠回自身。通过控制透明度(Alpha Accumulation),密度高的地方发出如星系核心般的璀璨光芒,密度低的地方泛出宛如深海发光水母般的薄雾。
02 谐振仪与莫尔弦丝:重力摆钟凝固的建筑级薄膜
在维多利亚时代,科学家发明了双摆绘图仪(Harmonograph)——用两根长短不一的物理摆钟,借助重力与摩擦阻尼绘制出奇妙的谐振曲线。
在 Processing 中,当四个带有微小频差衰减的正弦波相遇(例如频率比设定为接近但不等于整数的 3.001 : 2.000),六十万次细腻描画会引发前所未有的莫尔干涉效应(Moiré Effect):

▲ 4 重衰减正弦波谐振交织:呈现出扎哈·哈迪德式参数化建筑表皮与半透明发光织物质感
这些极细的彩色光弦层层叠叠,在人眼中制造出了极具欺骗性的立体空间感——你看到的不是线,而是一座在幽暗虚空中缓缓起伏的半透明光之穹顶。
03 三维参数化拓扑:纯代码捏出的超现实雕塑
很多设计师以为要做出前卫的 3D 艺术品,必须在 Blender 或 Cinema 4D 里雕刻拉扯面数。
但 OpenProcessing 上的高阶创作者,往往直接用三角函数参数方程在内存中实时“生发”出复杂的空间拓扑纽结(Torus Knot)与异星有机骨骼:

▲ 纯三角函数参数方程构建的 3D 空间环面纽结雕塑(Torus Knot p=3, q=7)
不需要加载几个 G 的复杂网格文件,代码只用 $p$ 与 $q$ 两个互质常数,让环形坐标在 $X, Y, Z$ 三维空间中不断穿梭自锁。配合正弦色谱着色,整个结构充满了数学与未来主义相交的冰冷神圣感。
04 蜂与炸弹(Bees & Bombs):极度舒适的动力学催眠
如果你在社交网络上刷到过那些让人“看了一下午停不下来”的几何动力学循环动图,你大概率见识过大神 Dave Whyte(网名 Bees & Bombs) 的杰作。

▲ Bees & Bombs 标志性美学:距离延迟正弦相位波驱动的同心六角动态波涡
为什么刚硬的几何体能运动得像水滴一样具有生命感?
Dave Whyte 的核心不传之秘就在于“距离衰减的相位波(Distance Phase Wave)”:
float phase = time - dist(x, y, cx, cy) * delayFactor;
float angle = sin(phase);
就这么一行简单的距离延迟,当数百个几何体从内向外逐层受力时,机械阵列瞬间化作水面泛起的层层涟漪。没有任何突兀的开始与停顿,三角函数的连续周期性赋予了它永不枯竭的无缝循环生命。
05 25 行硬核实战:在电脑上复刻你的第一张星云吸引子
想亲身体验这种数学带来的视觉震撼吗?复制下面这段经过精简提炼的完整 Processing 代码:
float a = -1.4, b = 1.6, c = 1.0, d = 0.7;
float x = 0.1, y = 0.1;
void setup() {
size(900, 900);
background(8, 10, 20);
}
void draw() {
// 每帧高速计算 20000 个迭代微粒
for (int i = 0; i < 20000; i++) {
float nx = sin(a * y) + c * cos(a * x);
float ny = sin(b * x) + d * cos(b * y);
x = nx;
y = ny;
// 映射到画布坐标
float px = map(x, -2.5, 2.5, 100, 800);
float py = map(y, -2.5, 2.5, 100, 800);
// 极低透明度(Alpha=12)制造星云微光渐进累积效果
stroke(100, 180, 255, 12);
point(px, py);
}
}
运行它,静静观察你的屏幕。几十秒后,数百万个幽灵般的发光微粒会在深黑色的背景中缓缓凝聚,深邃的宇宙星云与流动的丝绸折痕将在你眼前从虚无中“生长”出来。
✦ 结语:数学是艺术家与自然沟通的秘密方言
很多时候,我们被学校里的公式证明消磨了对数学的感知。但在生成艺术的世界里,三角函数从来不是试卷上的数字,它是大自然起伏的胸膛、是星系旋转的引力、是物理摆钟凝固的舞步。
把参数交给数学,把直觉交给你自己。当你按下运行键的那一刻,你就是在亲手创造一个全新的宇宙。
如果你也对这类数学与代码交织的视觉实验感兴趣,欢迎来云栈社区和更多创意编程爱好者交流。