如何快速启动 Weir 生成式系统:面向新手的完整配置指南
Weir 是一个功能强大的生成式系统构建工具包,专门为创建各种生成算法艺术而设计。作为 snek 的下一代版本,它提供了丰富的数学运算、图形处理和随机生成功能,让开发者能够轻松构建复杂的生成式艺术作品。
🚀 快速安装步骤
1. 获取项目源码
首先克隆 Weir 项目到本地:
git clone https://gitcode.com/gh_mirrors/we/weir
2. 安装依赖配置
Weir 使用 Quicklisp 管理依赖。安装完成后,在 Lisp REPL 中执行:
(ql:quickload :weir)
如果出现加载问题,可以通过以下方式解决:
(load "weir.asd")
或者将项目路径添加到 Quicklisp 配置中:
#+quicklisp
(push "/path/to/dir/containing/weir" ql:*local-project-directories*)
🔧 核心功能模块详解
2D/3D 向量运算系统
Weir 提供了完整的向量运算支持,位于 src/vec/ 目录:
- 基础向量操作:加法、乘法、除法、减法
- 高级几何运算:叉积、点积、线插值、线线交点
- 标量和列表支持:支持向量列表的批量操作
随机数生成器
强大的随机数生成功能,支持多种分布:
; 0到a之间的随机双精度数
(rnd:rnd a)
; 正态分布随机数
(rnd:norm :mu 0d0 :sigma 1d0)
; 圆形区域内的均匀分布
(rnd:in-circ a :xy p)
Weir 图数据结构
核心的图数据结构,用于处理顶点和边的关系:
(let ((wer (weir:make)))
; 添加三个随机边
(loop repeat 3
do (weir:add-edge! wer
(weir:add-vert! wer (rnd:in-circ 200d0))
(weir:add-vert! wer (rnd:in-circ 200d0
:xy (vec:rep 500d0)))))
其他实用工具
- 颜色处理:
pigment包支持丰富的颜色操作 - 样条曲线:
bzspl提供贝塞尔样条支持 - 路径简化:
simplify-path优化复杂路径
🎨 实际应用示例
基本图形生成
Weir 可以轻松创建复杂的几何图案:
(let* ((points (rnd:nin-circ 5 400d0))
(bz (bzspl:make points)))
; 在样条上采样点
(bzspl:pos bz (rnd:rnd)))
SVG 矢量图输出
使用 draw-svg 包生成适合绘图的矢量文件:
(let ((psvg (draw-svg:make :stroke "black")))
; 绘制路径和圆形
(draw-svg:path psvg pts :sw 3d0)
(draw-svg:circ psvg (vec:rep 30d0) 10d0 :sw 3d0 :stroke "red"))
📁 项目结构概览
Weir 项目采用模块化设计:
- src/weir/:核心图数据结构
- src/vec/:向量运算系统
- src/rnd/:随机数生成
- examples/:丰富的使用示例
🛠️ 测试与验证
运行测试确保系统正常工作:
(asdf:test-system :weir)
或者使用提供的测试脚本:
./run-tests.sh
💡 进阶使用技巧
自定义变更操作
通过 alterations 机制,可以定义复杂的变更逻辑:
(weir:with (wer %)
(weir:itr-verts (wer v)
(% (weir:move-vert? v (rnd:in-circ 10d0)))))
查看 examples/custom-alt.lisp 获取更多自定义示例。
🎯 总结
Weir 生成式系统为艺术创作和算法生成提供了强大的工具集。通过简单的配置和丰富的功能模块,开发者可以快速构建复杂的生成艺术作品。无论是简单的几何图案还是复杂的动态系统,Weir 都能提供优雅的解决方案。
开始你的生成式艺术创作之旅,探索 Weir 带来的无限可能性!✨
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考




