algorithmic-art

algorithmic-art

熱門

使用 p5.js 建立演算法藝術,搭配種子亂數與互動式參數探索。當使用者要求使用程式碼創作藝術、生成式藝術、演算法藝術、流場或粒子系統時使用。創作原創的演算法藝術,而非複製現有藝術家的作品,以避免侵犯著作權。

15萬星標
1.9萬分支
更新於 2026/6/21
SKILL.md
readonlyread-only
name
algorithmic-art
description

使用 p5.js 建立演算法藝術,搭配種子亂數與互動式參數探索。當使用者要求使用程式碼創作藝術、生成式藝術、演算法藝術、流場或粒子系統時使用。創作原創的演算法藝術,而非複製現有藝術家的作品,以避免侵犯著作權。

演算法哲學是透過程式碼表達的運算美學運動。輸出 .md 檔案(哲學)、.html 檔案(互動檢視器)與 .js 檔案(生成演算法)。

這分兩個步驟進行:

  1. 建立演算法哲學(.md 檔案)
  2. 透過建立 p5.js 生成式藝術來表達(.html + .js 檔案)

首先,執行以下任務:

演算法哲學建立

首先,建立一個演算法哲學(非靜態圖片或模板),該哲學將透過以下方式詮釋:

  • 運算過程、湧現行為、數學之美
  • 種子亂數、雜訊場域、有機系統
  • 粒子、流場、場域、力
  • 參數變化與受控混沌

關鍵理解

  • 接收的內容:使用者提供的細微輸入或指示,作為基礎,但不應限制創作自由。
  • 建立的內容:一個演算法哲學/生成式美學運動。
  • 接下來發生的事:同一個版本接收該哲學,並用程式碼表達它——建立 p5.js 草圖,其中 90% 是演算法生成,10% 是必要參數。

考慮以下方法:

  • 為生成式藝術運動撰寫宣言
  • 下一階段涉及撰寫賦予其生命的演算法

哲學必須強調:演算法表達、湧現行為、運算之美、種子變化。

如何產生演算法哲學

為運動命名(1-2 個字):「有機湍流」/「量子和聲」/「湧現寂靜」

闡述哲學(4-6 段——簡潔但完整):

為了捕捉演算法的本質,表達此哲學如何透過以下方式展現:

  • 運算過程與數學關係?
  • 雜訊函數與亂數模式?
  • 粒子行為與場域動態?
  • 時間演化與系統狀態?
  • 參數變化與湧現複雜性?

關鍵指引:

  • 避免冗餘:每個演算法面向應只提及一次。避免重複雜訊理論、粒子動力學或數學原理的概念,除非增加新的深度。
  • 反覆強調工藝:哲學必須多次強調最終演算法應看起來像是耗費無數小時開發、精心打磨,且出自該領域頂尖專家之手。這個框架至關重要——重複使用「精心打造的演算法」、「深厚運算專業的產物」、「痛苦的最佳化」、「大師級實作」等詞語。
  • 保留創作空間:具體說明演算法方向,但保持簡潔,讓下一個 Claude 有空間以極高的工藝水準進行詮釋性的實作選擇。

哲學必須引導下一個版本以演算法方式表達想法,而非透過靜態圖片。美存在於過程之中,而非最終畫面。

哲學範例

「有機湍流」
哲學:受自然法則約束的混沌,從混亂中湧現秩序。
演算法表達:由多層 Perlin 雜訊驅動的流場。數千個粒子跟隨向量力,其軌跡累積成有機密度圖。多個雜訊八度創造湍流區域與平靜區域。顏色從速度與密度中浮現——快速粒子燃燒明亮,慢速粒子褪入陰影。演算法運行直到平衡——一個精心調校的平衡,每個參數都經過一位運算美學大師無數次迭代的打磨。

「量子和聲」
哲學:展現波狀干涉模式的離散實體。
演算法表達:粒子在網格上初始化,每個粒子攜帶一個相位值,透過正弦波演化。當粒子靠近時,它們的相位會干涉——建設性干涉產生明亮節點,破壞性干涉產生空洞。簡單諧波運動產生複雜的湧現曼陀羅。這是痛苦頻率校準的結果,每個比例都經過精心挑選以產生共鳴之美。

「遞迴低語」
哲學:跨尺度的自相似性,有限空間中的無限深度。
演算法表達:遞迴細分的分支結構。每個分支略微隨機化,但受黃金比例約束。L-system 或遞迴細分產生既數學又有機的樹狀形式。微妙的雜訊擾動打破完美對稱。線條粗細隨每個遞迴層級遞減。每個分支角度都是深度數學探索的產物。

「場域動力學」
哲學:看不見的力透過其對物質的影響而顯現。
演算法表達:由數學函數或雜訊構成的向量場。粒子在邊緣誕生,沿場線流動,在達到平衡或邊界時消亡。多個場域可以吸引、排斥或旋轉粒子。視覺化只顯示軌跡——看不見的力所留下的幽靈般證據。一個透過力平衡精心編排的運算之舞。

「隨機結晶」
哲學:隨機過程結晶成有序結構。
演算法表達:隨機圓形填充或 Voronoi 鑲嵌。從隨機點開始,讓它們透過鬆弛演算法演化。細胞互相推開直到平衡。根據細胞大小、鄰居數量或與中心的距離著色。產生的有機鑲嵌既隨機又不可避免。每個種子產生獨特的結晶之美——大師級生成演算法的標誌。

這些是濃縮範例。實際的演算法哲學應為 4-6 個紮實的段落。

基本原則

  • 演算法哲學:建立一個要透過程式碼表達的運算世界觀
  • 過程重於產物:始終強調美來自演算法的執行——每次運行都是獨一無二的
  • 參數化表達:想法透過數學關係、力、行為來溝通——而非靜態構圖
  • 藝術自由:下一個 Claude 以演算法方式詮釋哲學——提供創作實作空間
  • 純生成式藝術:這是關於創造活的演算法,而非帶有隨機性的靜態圖片
  • 專家工藝:反覆強調最終演算法必須感覺精心打造、經過無數次迭代打磨、是該領域頂尖專家的深厚專業產物

演算法哲學應為 4-6 段。 用詩意的運算哲學填滿它,將預期的願景結合在一起。避免重複相同觀點。將此演算法哲學輸出為 .md 檔案。


推導概念種子

關鍵步驟:在實作演算法之前,找出原始請求中細微的概念線索。

基本原則
概念是嵌入演算法本身的微妙、小眾參考——不總是字面意義,總是精緻。熟悉該主題的人應直覺感受到它,而其他人則只是體驗到大師級的生成構圖。演算法哲學提供運算語言。推導出的概念提供靈魂——安靜的概念 DNA 無形地編織進參數、行為和湧現模式中。

非常重要:參考必須如此精煉,以至於它增強作品的深度而不自我宣告。想像一位爵士音樂家透過演算法和聲引用另一首歌——只有知道的人才會捕捉到,但每個人都欣賞生成之美。


P5.JS 實作

在哲學和概念框架建立後,透過程式碼表達它。暫停一下,整理思緒再繼續。僅使用所建立的演算法哲學和以下指示。

⚠️ 步驟 0:先讀取模板 ⚠️

關鍵:在撰寫任何 HTML 之前:

  1. 使用讀取工具讀取 templates/viewer.html
  2. 研究確切的結構、樣式和 Anthropic 品牌
  3. 將該檔案作為字面上的起點——而不僅僅是靈感
  4. 保持所有固定區段完全如圖所示(標頭、側邊欄結構、Anthropic 顏色/字型、種子控制、動作按鈕)
  5. 僅取代檔案註解中標記的可變區段(演算法、參數、參數的 UI 控制)

避免:

  • ❌ 從頭建立 HTML
  • ❌ 發明自訂樣式或配色方案
  • ❌ 使用系統字型或深色主題
  • ❌ 更改側邊欄結構

遵循以下做法:

  • ✅ 複製模板的確切 HTML 結構
  • ✅ 保留 Anthropic 品牌(Poppins/Lora 字型、淺色、漸層背景)
  • ✅ 維持側邊欄佈局(種子 → 參數 → 顏色? → 動作)
  • ✅ 僅取代 p5.js 演算法和參數控制

模板是基礎。在其上建構,而非重建。


為了建立畫廊品質、活生生的運算藝術,以演算法哲學為基礎。

技術需求

種子亂數(Art Blocks 模式)

// 始終使用種子以確保可重現性
let seed = 12345; // 或來自使用者輸入的雜湊
randomSeed(seed);
noiseSeed(seed);

參數結構——遵循哲學

為了建立自然從演算法哲學中浮現的參數,思考:「這個系統的哪些特質可以調整?」

let params = {
  seed: 12345,  // 始終包含種子以確保可重現性
  // 顏色
  // 新增控制您演算法的參數:
  // - 數量(多少?)
  // - 尺度(多大?多快?)
  // - 機率(多可能?)
  // - 比例(什麼比例?)
  // - 角度(什麼方向?)
  // - 閾值(行為何時改變?)
};

為了設計有效的參數,專注於系統需要可調的屬性,而不是思考「模式類型」。

核心演算法——表達哲學

關鍵:演算法哲學應決定要建立什麼。

為了透過程式碼表達哲學,避免思考「我該用哪種模式?」而是思考「如何透過程式碼表達這個哲學?」

如果哲學是關於有機湧現,考慮使用:

  • 隨時間累積或成長的元素
  • 受自然規則約束的隨機過程
  • 反饋迴圈與互動

如果哲學是關於數學之美,考慮使用:

  • 幾何關係與比例
  • 三角函數與和聲
  • 精確計算創造意外模式

如果哲學是關於受控混沌,考慮使用:

  • 嚴格邊界內的隨機變化
  • 分岔與相變
  • 從混亂中湧現秩序

演算法從哲學中流出,而非從選項選單中。

為了引導實作,讓概念本質通知創意和原創的選擇。建立表達這個特定請求願景的東西。

畫布設定:標準 p5.js 結構:

function setup() {
  createCanvas(1200, 1200);
  // 初始化您的系統
}

function draw() {
  // 您的生成演算法
  // 可以是靜態的(noLoop)或動畫
}

工藝要求

關鍵:為了達到大師級水準,建立感覺像是經過一位生成藝術大師無數次迭代而產生的演算法。仔細調整每個參數。確保每個模式都有目的地浮現。這不是隨機雜訊——這是經過深厚專業知識打磨的受控混沌。

  • 平衡:複雜性而不視覺雜訊,秩序而不僵化
  • 色彩和諧:深思熟慮的調色盤,而非隨機 RGB 值
  • 構圖:即使在隨機性中,也要維持視覺層次與流動
  • 效能:流暢執行,若為動畫則最佳化即時效能
  • 可重現性:相同種子始終產生完全相同的輸出

輸出格式

輸出:

  1. 演算法哲學——作為 Markdown 或文字,解釋生成美學
  2. 單一 HTML 成品——從 templates/viewer.html 建立的獨立互動生成式藝術(見步驟 0 和下一節)

HTML 成品包含一切:p5.js(來自 CDN)、演算法、參數控制和 UI——全部在一個檔案中,可立即在 claude.ai 成品或任何瀏覽器中運作。從模板檔案開始,而非從頭開始。


互動成品建立

提醒:templates/viewer.html 應已讀取(見步驟 0)。使用該檔案作為起點。

為了允許探索生成式藝術,建立一個單一、獨立的 HTML 成品。確保此成品可立即在 claude.ai 或任何瀏覽器中運作——無需設定。將所有內容內嵌。

關鍵:固定 vs 可變

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 div。

3. 顏色(可選/可變) - 如果藝術需要可調整的顏色則包含:

  • 如果使用者應控制調色盤,則新增顏色選擇器
  • 如果藝術使用固定顏色,則跳過此區段
  • 如果藝術是單色的,則跳過

4. 動作(固定) - 始終完全如圖所示包含:

  • 重新產生按鈕
  • 重設按鈕
  • 下載 PNG 按鈕

要求

  • 種子控制必須運作(上一個/下一個/隨機/跳至/顯示)
  • 所有參數必須有 UI 控制
  • 重新產生、重設、下載按鈕必須運作
  • 保留 Anthropic 品牌(UI 樣式,非藝術顏色)

使用成品

HTML 成品立即運作:

  1. claude.ai:顯示為互動成品——立即執行
  2. 作為檔案:儲存並在任何瀏覽器中開啟——無需伺服器
  3. 分享:傳送 HTML 檔案——它完全獨立

變體與探索

成品預設包含種子導航(上一個/下一個/隨機按鈕),允許使用者探索變體而無需建立多個檔案。如果使用者想要突出顯示特定變體:

  • 包含種子預設(「變體 1:種子 42」、「變體 2:種子 127」等按鈕)
  • 新增「畫廊模式」,並排顯示多個種子的縮圖
  • 全部在同一個單一成品內

這就像從同一塊版建立一系列印刷品——演算法一致,但每個種子揭示其潛力的不同面向。互動性質意味著使用者透過探索種子空間發現自己的最愛。


創作過程

使用者請求演算法哲學實作

每個請求都是獨一無二的。過程涉及:

  1. 詮釋使用者的意圖——正在尋找什麼美學?
  2. 建立演算法哲學(4-6 段)描述運算方法
  3. 用程式碼實作它——建立表達此哲學的演算法
  4. 設計適當的參數——什麼應該是可調的?
  5. 建立匹配的 UI 控制——這些參數的滑桿/輸入

常數

  • Anthropic 品牌(顏色、字型、佈局)
  • 種子導航(始終存在)
  • 獨立 HTML 成品

其他一切皆可變

  • 演算法本身
  • 參數
  • UI 控制
  • 視覺結果

為了達到最佳結果,相信創造力,讓哲學引導實作。


資源

此技能包含有用的模板和文件:

  • templates/viewer.html:所有 HTML 成品的必要起點。

    • 這是基礎——包含確切的結構和 Anthropic 品牌
    • 保持不變:佈局結構、側邊欄組織、Anthropic 顏色/字型、種子控制、動作按鈕
    • 取代:p5.js 演算法、參數定義和參數區段中的 UI 控制
    • 檔案中的大量註解標記了哪些要保留、哪些要取代
  • templates/generator_template.js:p5.js 最佳實務和程式碼結構原則的參考。

    • 展示如何組織參數、使用種子亂數、結構化類別
    • 不是模式選單——使用這些原則來建立獨特的演算法
    • 將演算法內嵌在 HTML 成品中(不要建立獨立的 .js 檔案)

關鍵提醒

  • 模板是起點,而非靈感
  • 演算法是創作獨特內容的地方
  • 不要複製流場範例——建立哲學要求的內容
  • 務必保留模板中的確切 UI 結構和 Anthropic 品牌