名称: 算法艺术 描述: 使用p5.js创建算法艺术,具有种子随机性和交互式参数探索。当用户请求使用代码创建艺术、生成艺术、算法艺术、流场或粒子系统时使用此技能。创建原创算法艺术,而不是复制现有艺术家的作品,以避免版权侵犯。 许可证: 完整条款在LICENSE.txt中
算法哲学是计算美学运动,通过代码表达。输出.md文件(哲学)、.html文件(交互式查看器)和.js文件(生成算法)。
这分为两个步骤:
- 算法哲学创建(.md文件)
- 通过创建p5.js生成艺术来表达(.html + .js文件)
首先,执行此任务:
算法哲学创建
开始,创建一个算法哲学(非静态图像或模板),将通过以下方式解释:
- 计算过程、涌现行为、数学美
- 种子随机性、噪声场、有机系统
- 粒子、流、场、力
- 参数变化和受控混沌
关键理解
- 接收内容:用户提供的一些微妙输入或指令作为基础,但不限制创意自由。
- 创建内容:一个算法哲学/生成美学运动。
- 后续步骤:同一版本接收哲学并用代码表达——创建p5.js草图,其中90%是算法生成,10%是基本参数。
考虑以下方法:
- 为生成艺术运动撰写宣言
- 下一阶段涉及编写算法以实现它
哲学必须强调:算法表达、涌现行为、计算美、种子变化。
如何生成算法哲学
命名运动(1-2个词):“有机湍流”/“量子和谐”/“涌现静止”
阐述哲学(4-6段——简洁但完整):
捕捉算法本质,表达此哲学如何通过以下方面体现:
- 计算过程和数学关系?
- 噪声函数和随机模式?
- 粒子行为和场动态?
- 时间演化和系统状态?
- 参数变化和涌现复杂性?
关键准则:
- 避免冗余:每个算法方面应只提一次。除非增加新深度,避免重复关于噪声理论、粒子动态或数学原理的概念。
- 反复强调工艺:哲学必须多次强调,最终算法应看似经过无数小时开发、精心优化,出自该领域顶尖专家之手。此框架至关重要——重复短语如“精心制作的算法”、“深度计算专业知识的产物”、“艰苦优化”、“大师级实现”。
- 留出创意空间:具体说明算法方向,但足够简洁,以便下一个Claude有空间做出解释性实现选择,达到极高工艺水平。
哲学必须指导下一版本算法性地表达想法,而非通过静态图像。美存在于过程中,而非最终帧。
哲学示例
“有机湍流” 哲学:混沌受自然法则约束,秩序从无序中涌现。 算法表达:由分层Perlin噪声驱动的流场。数千粒子跟随矢量力,其轨迹积累成有机密度图。多个噪声倍频程创建湍流区域和宁静区。颜色从速度和密度中涌现——快速粒子燃烧明亮,缓慢粒子褪为阴影。算法运行至平衡——经过无数次迭代由计算美学大师精细调校的精心平衡。
“量子和谐” 哲学:离散实体展示波状干涉模式。 算法表达:粒子初始化在网格上,每个携带通过正弦波演化的相位值。当粒子靠近时,相位干涉——相长干涉创建明亮节点,相消创建空隙。简单谐波运动生成复杂涌现曼荼罗。经过精心频率校准的结果,每个比率都精心选择以产生共振美。
“递归低语” 哲学:跨尺度的自相似性,有限空间中的无限深度。 算法表达:递归细分的分支结构。每个分支稍作随机化但受黄金比例约束。L系统或递归细分生成树状形式,既数学又有机。微妙噪声扰动打破完美对称。线宽随递归级别减小。每个分支角度是深度数学探索的产物。
“场动态” 哲学:通过物质效应使不可见力可见。 算法表达:由数学函数或噪声构建的矢量场。粒子在边缘诞生,沿场线流动,在达到平衡或边界时死亡。多个场可吸引、排斥或旋转粒子。可视化仅显示痕迹——不可见力的幽灵般证据。通过力平衡精心编排的计算舞蹈。
“随机结晶” 哲学:随机过程结晶成有序结构。 算法表达:随机圆填充或Voronoi剖分。从随机点开始,通过松弛算法演化。细胞推开直至平衡。颜色基于细胞大小、邻居计数或距中心距离。涌现的有机拼贴感觉既随机又必然。每个种子产生独特结晶美——大师级生成算法的标志。
这些是浓缩示例。实际算法哲学应为4-6个实质性段落。
基本原则
- 算法哲学:创建通过代码表达的计算世界观
- 过程重于产品:始终强调美从算法执行中涌现——每次运行都唯一
- 参数表达:想法通过数学关系、力、行为交流——而非静态构图
- 艺术自由:下一个Claude算法性地解释哲学——提供创意实现空间
- 纯生成艺术:这是关于制作活算法,而非带随机性的静态图像
- 专家工艺:反复强调最终算法必须感觉精心制作,通过无数次迭代优化,是计算美学领域顶尖专家深度专业知识的产物
算法哲学应为4-6段长。 填充诗意计算哲学,结合预期愿景。避免重复相同点。将此算法哲学输出为.md文件。
推导概念种子
关键步骤:在实现算法之前,识别原始请求中的微妙概念线索。
基本原则: 概念是算法本身内嵌的微妙、小众参考——非总字面,总精妙。熟悉该主题的人应直观感受,而其他人仅体验大师生成构图。算法哲学提供计算语言。推导的概念提供灵魂——无声概念DNA无形编织到参数、行为和涌现模式中。
此非常重要:参考必须如此精炼,以增强作品深度而不自我宣告。像爵士音乐家通过算法和谐引用另一首歌——只有知道的人会捕捉,但所有人都欣赏生成美。
P5.JS实现
哲学和概念框架建立后,通过代码表达。在继续前暂停思考。仅使用创建的算法哲学和以下指令。
⚠️ 步骤0:先阅读模板⚠️
关键:在编写任何HTML之前:
- 阅读
templates/viewer.html使用阅读工具 - 研究 精确结构、样式和Anthropic品牌
- 使用该文件作为字面起点——不仅仅是灵感
- 保持所有固定部分完全如示(页眉、侧边栏结构、Anthropic颜色/字体、种子控件、操作按钮)
- 仅替换标记的文件注释中的可变部分(算法、参数、参数的UI控件)
避免:
- ❌ 从零创建HTML
- ❌ 发明自定义样式或配色方案
- ❌ 使用系统字体或深色主题
- ❌ 更改侧边栏结构
遵循这些实践:
- ✅ 复制模板的精确HTML结构
- ✅ 保持Anthropic品牌(Poppins/Lora字体、浅色、渐变背景)
- ✅ 维护侧边栏布局(种子→参数→颜色?→操作)
- ✅ 仅替换p5.js算法和参数控件
模板是基础。基于其上构建,不要重建。
要创建画廊质量的计算艺术,以算法哲学为基础。
技术要求
种子随机性(艺术块模式):
// 始终使用种子以确保可重复性
let seed = 12345; // 或用户输入哈希
randomSeed(seed);
noiseSeed(seed);
参数结构——遵循哲学:
要从算法哲学中自然涌现参数,考虑:“系统的哪些特性可调整?”
let params = {
seed: 12345, // 始终包含种子以确保可重复性
// 颜色
// 添加控制算法的参数:
// - 数量(多少?)
// - 尺度(多大?多快?)
// - 概率(多可能?)
// - 比率(什么比例?)
// - 角度(什么方向?)
// - 阈值(何时行为变化?)
};
设计有效参数,专注于系统需要可调的特性,而非“模式类型”。
核心算法——表达哲学:
关键:算法哲学应决定构建什么。
要通过代码表达哲学,避免思考“使用哪个模式?”,而是思考“如何通过代码表达此哲学?”
如果哲学关于有机涌现,考虑使用:
- 随时间累积或增长的元素
- 受自然规则约束的随机过程
- 反馈循环和交互
如果哲学关于数学美,考虑使用:
- 几何关系和比率
- 三角函数和和谐
- 精确计算创造意外模式
如果哲学关于受控混沌,考虑使用:
- 严格边界内的随机变化
- 分叉和相变
- 秩序从无序中涌现
算法源于哲学,而非选项菜单。
为指导实现,让概念本质启发创意和原创选择。构建表达此特定请求愿景的内容。
画布设置:标准p5.js结构:
function setup() {
createCanvas(1200, 1200);
// 初始化系统
}
function draw() {
// 生成算法
// 可静态(noLoop)或动画
}
工艺要求
关键:要达到大师水平,创建感觉像经过生成艺术大师无数次迭代涌现的算法。仔细调校每个参数。确保每个模式都有目的涌现。此非随机噪声——此是深度专业知识优化的受控混沌。
- 平衡:复杂而不视觉嘈杂,有序而不僵化
- 色彩和谐:深思熟虑的调色板,非随机RGB值
- 构图:即使在随机性中,保持视觉层次和流
- 性能:平滑执行,如果动画则实时优化
- 可重复性:相同种子总是产生相同输出
输出格式
输出:
- 算法哲学——作为markdown或文本解释生成美学
- 单一HTML工件——自包含交互生成艺术,基于
templates/viewer.html构建(见步骤0和下一节)
HTML工件包含一切:p5.js(来自CDN)、算法、参数控件和UI——全部在一个文件中,立即在claude.ai工件或任何浏览器中工作。从模板文件开始,非从零。
交互式工件创建
提醒:templates/viewer.html应已阅读(见步骤0)。使用该文件作为起点。
要允许探索生成艺术,创建单一自包含HTML工件。确保此工件立即在claude.ai或任何浏览器中工作——无需设置。内嵌一切。
关键:固定与可变
templates/viewer.html文件是基础。包含所需精确结构和样式。
固定(始终完全如示包含):
- 布局结构(页眉、侧边栏、主画布区域)
- Anthropic品牌(UI颜色、字体、渐变)
- 侧边栏种子部分:
- 种子显示
- 上一步/下一步按钮
- 随机按钮
- 跳转种子输入 + 前往按钮
- 操作部分在侧边栏:
- 重新生成按钮
- 重置按钮
可变(为每件艺术品自定义):
- 整个p5.js算法(setup/draw/类)
- 参数对象(定义艺术所需)
- 侧边栏参数部分:
- 参数控件数量
- 参数名称
- 滑块的最小/最大/步值
- 控件类型(滑块、输入等)
- 颜色部分(可选):
- 如果艺术需要颜色选择器
- 如果艺术可能使用固定颜色
- 如果艺术可能是单色(无需颜色控件)
- 基于艺术需求决定
每件艺术品应有独特参数和算法! 固定部分提供一致UX——其他表达独特愿景。
必需功能
1. 参数控件
- 数字参数滑块(粒子计数、噪声尺度、速度等)
- 调色板颜色选择器
- 参数更改时实时更新
- 重置按钮以恢复默认值
2. 种子导航
- 显示当前种子号
- “上一步”和“下一步”按钮以循环种子
- “随机”按钮获取随机种子
- 输入字段以跳转到特定种子
- 请求时生成100种变体(种子1-100)
3. 单一工件结构
<!DOCTYPE html>
<html>
<head>
<!-- p5.js从CDN——始终可用 -->
<script src="https://cdnjs.cloudflare.com/ajax/libs/p5.js/1.7.0/p5.min.js"></script>
<style>
/* 所有样式内联——简洁、极简 */
/* 画布在上,控件在下 */
</style>
</head>
<body>
<div id="canvas-container"></div>
<div id="controls">
<!-- 所有参数控件 -->
</div>
<script>
// 所有p5.js代码内联在此
// 参数对象、类、函数
// setup()和draw()
// UI处理程序
// 一切自包含
</script>
</body>
</html>
关键:这是单一工件。无外部文件,无导入(除了p5.js CDN)。一切内联。
4. 实现细节——构建侧边栏
侧边栏结构:
1. 种子(固定)——始终完全如示包含:
- 种子显示
- 上一步/下一步/随机/跳转按钮
2. 参数(可变)——为艺术创建控件:
<div class="control-group">
<label>参数名称</label>
<input type="range" id="param" min="..." max="..." step="..." value="..." oninput="updateParam('param', this.value)">
<span class="value-display" id="param-value">...</span>
</div>
添加尽可能多的control-group divs作为参数。
3. 颜色(可选/可变)——如果艺术需要可调颜色则包含:
- 如果用户应控制调色板则添加颜色选择器
- 如果艺术使用固定颜色则跳过此部分
- 如果艺术是单色则跳过
4. 操作(固定)——始终完全如示包含:
- 重新生成按钮
- 重置按钮
- 下载PNG按钮
要求:
- 种子控件必须工作(上一步/下一步/随机/跳转/显示)
- 所有参数必须有UI控件
- 重新生成、重置、下载按钮必须工作
- 保持Anthropic品牌(UI样式,非艺术颜色)
使用工件
HTML工件立即工作:
- 在claude.ai中:显示为交互式工件——立即运行
- 作为文件:保存并在任何浏览器中打开——无需服务器
- 共享:发送HTML文件——它完全自包含
变体与探索
工件默认包括种子导航(上一步/下一步/随机按钮),允许用户探索变体而无需创建多个文件。如果用户希望突出特定变体:
- 包括种子预设(“变体1:种子42”、“变体2:种子127”等按钮)
- 添加“画廊模式”以并排显示多个种子缩略图
- 全部在同一单一工件内
这就像从同一版制作一系列版画——算法一致,但每个种子揭示其潜力的不同方面。交互性意味着用户通过探索种子空间发现自己的喜爱。
创意过程
用户请求 → 算法哲学 → 实现
每个请求都独特。过程涉及:
- 解释用户意图——寻求什么美学?
- 创建算法哲学(4-6段)描述计算方法
- 在代码中实现——构建表达此哲学的算法
- 设计适当参数——什么应可调?
- 构建匹配UI控件——这些参数的滑块/输入
常量:
- Anthropic品牌(颜色、字体、布局)
- 种子导航(始终存在)
- 自包含HTML工件
其他一切可变:
- 算法本身
- 参数
- UI控件
- 视觉结果
为达到最佳结果,信任创意,让哲学指导实现。
资源
此技能包括有用模板和文档:
-
templates/viewer.html:所有HTML工件的必需起点。
- 这是基础——包含精确结构和Anthropic品牌
- 保持未更改:布局结构、侧边栏组织、Anthropic颜色/字体、种子控件、操作按钮
- 替换:p5.js算法、参数定义和参数部分中的UI控件
- 文件中的广泛注释精确标记保留与替换内容
-
templates/generator_template.js:p5.js最佳实践和代码结构原则参考。
- 显示如何组织参数、使用种子随机性、结构类
- 非模式菜单——使用这些原则构建独特算法
- 在HTML工件中内嵌算法(非创建单独.js文件)
关键提醒:
- 模板是起点,非灵感
- 算法是创建独特内容之处
- 不要复制流场示例——构建哲学要求的内容
- 但保持模板中精确UI结构和Anthropic品牌