用途
该技能面向“用代码、数学与涌现来创作艺术”的场景,提供算法艺术与生成艺术的核心模式与代码示例。其核心理念包括:简单规则产生复杂结果(涌现)、使用种子随机保证可复现、同一算法通过参数探索产生无限变体,以及把“意外”视为特性。创作流程被概括为:想法 → 算法 → 参数 → 渲染 → 评估 → 迭代。
主要能力
资料覆盖以下算法方向:
- 噪声函数:Perlin/Simplex 噪声,用于生成平滑连续的随机值,适合有机运动。涉及参数包括缩放(频率)、倍频(octaves)、振幅与时间偏移;应用方向包括地形生成、纹理合成、有机运动、流场、云烟效果。
- 流场:在网格点上由噪声生成角度向量,粒子沿流场运动。示例包含流场向量绘制与粒子类(位置、速度、加速度、最大速度、边界环绕、轨迹绘制)。
- L-System:由公理、替换规则、角度与迭代次数构成。给出分形树、Koch 雪花、Sierpinski 三角形的经典规则,以及将字符串解释为绘图命令的渲染方式(F 前进、+/- 旋转、[] 压栈/出栈)。
- 分形:Mandelbrot 集与 Julia 集的迭代函数,以及递归细分(随机水平或垂直切分矩形)。
- 粒子系统:基础粒子类(位置、速度、加速度、寿命、尺寸),以及重力、向点吸引、排斥等力的计算方式。
- 颜色算法:互补、三角、类似、分裂互补等调色板生成方式,以及颜色插值与基于噪声取色。
- 图案算法:Truchet 瓷砖与基于距离判断的简单 Voronoi。
- 可复现随机:使用 randomSeed/noiseSeed,或由字符串生成哈希作为种子。
使用方式
资料以 p5.js 代码片段为主要示例形式,展示各算法的具体实现,例如在 draw() 中按像素采样噪声、在 setup() 中生成流场向量、用 render(sentence) 解释 L-System 字符串、用 mandelbrot/julia 函数计算迭代次数、用 subdivide 递归切分、用 Particle 类管理粒子生命周期等。同时列出创作工具及其语言与适用方向:p5.js(JavaScript,适合初学者与网页)、Processing(Java,适合桌面与印刷)、Three.js(JavaScript,适合 3D 与 WebGL)、TouchDesigner(可视化,适合实时与音视频)、Hydra(JavaScript,适合现场视觉)、Shadertoy(GLSL,适合 GPU 着色器)、Nannou(Rust,适合性能场景)。
适用场景
适合需要以程序化、参数化方式生成视觉作品的场景,包括噪声纹理与地形、流场绘画、分形图像、L-System 植物结构、粒子动画、程序化配色与图案设计等。
限制
资料未提供该技能的安装命令、运行环境要求、收费或价格信息、平台支持范围、性能指标或效果保证。示例代码以 p5.js 为主,其他语言与工具仅列出名称与适用方向,未给出对应实现细节。相关技能中提及 algorithmic-art、canvas-design、theme-factory、three-js-interactive-builder 等,但未说明其具体内容与依赖关系。