生成艺术
程序化生成图案:噪声场、细胞自动机、递归分形与随机游走。
技术栈: Canvas, noise, fractal
- Perlin 噪声流场 — 画面每一点都有一个「风向」,由平滑噪声决定。
- Julia 分形集 — Julia 集:每个点反复做 z = z² + c,数它多少步后跑远,按步数上色。
- 曼德博集合 — 对每个点 c,从 z = 0 开始反复做 z ← z² + c,看会不会逃到无穷远。
- 康威生命游戏 — 生命游戏:每个格子看周围 8 个邻居,活邻居 2~3 个就活下去,正好 3 个就出生。
- 沃罗诺伊 — 撒下若干「种子」点,画面上每个位置都归属离它最近的种子,于是平面被分成一块块区域。
- 递归树 — 画一根树枝,然后在末端左右各画一根更短的树枝,再对每根新树枝重复同样的事——这就是「递归」。
- 谢尔宾斯基三角 — 把一个三角形三条边的中点连起来,挖掉中间那个,剩下 3 个小三角;再对每个小三角重复。
- 圆形填充 — 随机选一个点,算出它离最近的圆和边框还有多远,就在那里放一个刚好不重叠的圆;重复很多次,大圆先占位,小圆填缝。
- 噪声地形 — 把平滑噪声当作「海拔」,一行行横着取样画成折线,远处的线在上、近处在下,并用纯色遮住后面的线,就形成有前后遮…
- 随机游走 — 每个游走者每一步随机选上、下、左、右之一走一步,像醉汉走路。
- L 系统植物 — 从字符串 "F" 开始,按规则把每个 F 替换成一串更长的指令,反复几次;然后让「海龟」照着画:F 前进画线…
- 波纹干涉 — 每个波源发出一圈圈圆形波。
- 染色扩散 — 两种「化学物质」A 和 B 在格子里扩散并反应(A + 2B → 3B),A 不断被补充,B 不断被移除。
- 马赛克噪声 — 把画面切成方砖,每块砖取中心点的噪声值,再按「色阶数」四舍五入成几档颜色(量化)。
- 极坐标花 — 用「角度 θ + 半径 r」来画图。
- 三角剖分 — 在网格上放顶点,并让每个顶点随噪声轻轻抖动;每个方格沿对角线切成两个三角形。
- 方块细分 — 把一个矩形沿长边切成两块,再对每块重复,直到达到深度或随机决定停下。
- 等高线 — 把噪声值当作地图上的高度,在高度恰好等于 1/n、2/n… 的地方画线,就像地图上的等高线。
- 墨水滴 — 一滴墨落入水中会向外扩散,半径增长越来越慢(约 ∝ √时间),颜色一圈圈分层,边缘因水流轻微抖动,最后淡去。
- 光纤束 — 一束光纤从底部同一点散开,每根是一条二次贝塞尔曲线,控制点随风摆动并被指针吸引。
- 像素排序感 — 逐行扫描图片,把亮度超过阈值的连续一段像素按亮度从暗到亮重新排列,就会出现被「拉丝」的效果。
- 细胞增长 — 每个细胞长大后一分为二,两个子细胞沿随机方向分开,体积各占一半(半径 ÷ √2)。
- 引力绘线 — 一组水平直线,像时空网格;画面上有 2 个绕圈运动的「质量」加上指针,每个质量都把附近的线点拉向自己,越近拉…
- 螺旋采样 — 第 i 个点放在半径 √i、角度 i × 发散角 的位置。