Thi.ng – 用于计算设计与艺术的开源构建模块

Hacker News Top 工具

摘要

thi.ng 是一个长期的开源项目,提供了约350个库和工具的庞大集合,用于计算设计、生成艺术和数据驱动的创意编程,主要使用 TypeScript 和 Clojure。

暂无内容
查看原文
查看缓存全文

缓存时间: 2026/06/09 08:43

# 计算设计的开源积木。始于2006年 来源:https://thi.ng/ 背景图片 thi.ng 标志 ### 这是什么? thi\.ng 是一个真正包罗万象的长期项目,专注于**计算设计(Computational Design)**。它不是一个框架,也不局限于特定的用例、环境甚至语言,而是一套庞大且成熟、相互补充的代码库集合,经过有机生长已达到**约 350 个子项目**,其中至少一半仍在积极维护中。本网站仍在建设中,目前仅是这些项目的入口,但最终将成为所有相关产出的综合中心和档案库。这里仅展示开源项目与教育资源。 ### 谁在维护? 该项目由**Karsten Schmidt**(https://mastodon.thi.ng/@toxi)自 2006 年创建并维护,并得到一小群杰出的**贡献者**(https://thi.ng/#contributors)的支持。在过去 28 年中,Karsten 创建并贡献了数百个开源项目,包括 **Processing**(https://processing.org/)和 **Clojure**(https://clojure.org/)。他曾在多所大学撰写、讲授计算与生成式设计相关课程及工作坊。他的作品在国际上展出,包括伦敦巴比肯艺术中心、维多利亚与阿尔伯特博物馆、纽约现代艺术博物馆、莫斯科车库当代艺术博物馆、霍隆设计博物馆、北京中央美术学院美术馆。 ### 为什么? 最初,thi\.ng 旨在帮助实现 Karsten 多样化的项目/委托工作以及实验性设计研究,形成一个我们可以尽可能自主成长和掌控的开源工具包。多年来,其概念范围大幅扩展。早期 thi\.ng 项目始于计算设计仍处于萌芽阶段之时。当时该领域可用的开源工具十分有限,我们的部分项目具有开创性,帮助填补了这一空白,而将这些工具用于教学/推广也成为其他主要项目目标。总的来说,该集合中最大的项目还捆绑了**200 多个示例**,并且定期增加新内容。 ### 如何工作? **thi\.ng 基于自下而上的生长与设计哲学:** 范围狭窄、用途单一的小型片段重新组合,以满足同样多样化领域中不断变化的用例需求。由于范围广泛,我们通常以轮询方式处理项目,基于反馈和*松散*定义的长期目标,这些目标可能(并被鼓励)随时间推移而改变。这包括大规模的重构、采用新语言、平台或技术,偶尔也会在项目稳定后放弃一些旧技术。这里的一些最古老的项目即使在最后一次正式发布近十年后,仍然拥有活跃的追随者…… ## 全光谱主题 一个事业,数百个侧面……本网站是正在进行的努力的前身,旨在为所有项目、资产和关系创建语义图——一项浩大的工程,已经催生了集合中的几个新项目。在准备就绪之前,以下交互式标签云试图鸟瞰集合各部分涵盖的主题。 显示所有 350 个项目(https://thi.ng/#tags),使用模糊搜索框或点击标签探索并仅显示相关项目。可以输入多个标签以进一步缩小搜索结果…… **当前主要开发重点**(https://thi.ng/#umbrella)是面向 **TypeScript**(https://www.typescriptlang.org/)和浏览器技术的数据驱动、**函数式**(https://thi.ng/#tags)工具。然而,thi\.ng 整体上瞄准不同的编程方法和语言,包括 **Clojure**(https://clojure.org/)、**ClojureScript**(https://clojurescript.org/)、**C11**(https://en.wikipedia.org/wiki/C11_%28C_standard_revision%29)、**Houdini VEX**(https://www.sidefx.com/)。所有项目共享相同的哲学,强调组合、互操作、简洁、数据转换、内省与可视化,以及使用强大的数据结构。大多数项目倾向于函数式和声明式设计的混合,而非经典的面向对象方法,但我们完全接纳目标语言,力求不教条,并在合理的情况下拥抱混合解决方案。集合的一部分也专注于领域特定语言,并提供核心基础设施以帮助其实现。 typescript2d 数据结构 3d clojure 动画 二进制 数组 workshop 浏览器 geometry 代码生成 clojurescript generative webgl 转换 graph 文件格式 functional ui canvas 图像 可视化 color typed array math processing\.org tree cli 导出 iterator svg toxiclibs async interval parser 像素 simulation dsl graphics hiccup 加速 literate\-programming bezier generator particles vector audio nd query random shader uk clipping text art circle glsl hardware interpolation java networked physics polygon transducer wasm analysis component composition design time ast bbox fabrication html interop logger mesh rstream sort stream agent baremetal database gui polyline reactive sample string architecture dsp gradient line matrix memory memory\-mapped pipeline shape tm32 align arc area channel distance encode event format json map object point rgb set shader\-ast template 1d 8bit benchmark bigint declarative decode filter gpgpu nft nodejs tool voxel 16bit adjacency aos bitmap compiler css dataflow diff dom float grayscale mean path pattern server subdivision typography zig 4d alpha ansi blend cellular\-automata chart compression cubic dag data\-oriented drawing file intersection no\-browser rect render topology validate 24bit 32bit algebra blur curve ellipse equality fuzzy grid hash hdom immutable kernel language markdown noise opencl opengl oscillator palette partition polymorphic quaternion recursion ser bi simd sparse transformation triple union utf8 wrapper xml ziglang allocator api ascii buffer cache cartesian centroid circumcenter cluster concatenative evolutionary fft forth frequency germany glitch grammar graphviz group hex keys logic macro median nested paper pool quadratic scene graph sculpture semweb sensor soa spatial spline state statistics texture theme variable voronoi 4bit 64bit assembly bidirectional bindings blit branding cloth convex convolution csp datalog dataviz dependency dominant dual edge floodfill gaussian hierarchy identifier invert javascript k\-means layout light lisp list livecoding lut mime multitasking neighborhood node number plot pointfree predicate prng proximity range raymarch rdf rdom resize rewrite rgb565 rotation runtime s\-expression scaffold scatter sdf search self\-organizing semantic\-web smoothstep standard\-deviation subscriptions sutherland\-hodgeman syntax synthesizer table tessellation tiff timestamp trie waveform wordwrap (还有 560 多个……) 1bit allpass arduino associative average axidraw bar base16 base62 base64 behavior biquad bitfield blocking boids chaikin communication comparator counter crypto csv cursor cycle datadriven deep delay delete denmark detect diagonal difference dither dmx dotproduct dynamic easing edge entropy envelope eucledian exif field fluid force fork\-join free\-list fsm fxhash haversine hermite hexdump histogram history houdini hsv imgui installation integer interaction interpreter ioc jpeg l\-system lifecycle linear linked\-data manhattan measure merge millisecond modular morton multiplex normal offset optimization org\-mode packer painting parametric peg pen plotter permutation png polyglot portugal prefix presets process projection promise pubsub quadedge queue reducer reflect regexp rler router rulebased scheduler schema scope select sequence shared\-memory shuffle sliding\-window sparsql split stack step svf swap swatch sweden switzerland swizzle temperature throttle timeline tokenizer touch transclusion transpiler triangle trigonometry tutorial tween typecheck unicode uuid vdom version video vm vocabulary webassembly wildcard z\-curve 2bit activation aggregation angle arcball argument artnet assemblyscript assert attractor automata avif balance base10 base26 base32 base36 base58 base8 base83 base85 batch belgium bencode block blue blurhash bollinger boolean bot braille braitenberg broadcast brown bucket bun bundler calculation cancel candle capacitance cellular cie1931 circular clock coerce column combinator compare complex complexity compute configuration console constant\-folding constants constraint contours contrast coo cookie coroutines cosine count cpp crop crossover cryptography csc csr current cvd\-heap data dataview date dce debug decomposition decorators deflate degree delaunay dem dense density derivative descend deterministic differentiation digital directed directory disjoint\-set distributed distribution donchian dots download driver dropping dynamodb ecs edit editlog emoji emscripten emulator energy entity epoch error es escape exponential fbo feature feedback fiber fiducial fifo filesystem fill flatten flocking flow floyd\-rivest fog follow font form formdata fractional france frustum game gamma generic genetic geo geometric geotiff gesture gif gis git global go golden\-ratio gps graycode green hair halton hatching hcy hdpi headers heading headless heap heuristic higher\-order hilbert hollerith homogeneous hsi hsl http hue hull i18n ibm icc icon id iges impulse incremental indexed inference infinite inheritance inline inspect instrument instrumentation interactive interceptors interfaces interleave io isoline israel iterative jaccard join k\-means\+\+ k\-medians k\-nearest kd\-tree keyframe kids korea kronecker lab laplacian lazy lch length levenshtein lfo liang\-barsky lfo lighting linkedlist lookat lookup low\-discrepancy lpg lru luminance macd marbling marching squares mask mass media recorder memoization mep metadata metric mime db mixins momentum monte\-carlo mouse mousewheel moving\-average mru msdf msgpack multi\-expression multipart multipass multiple\-dispatch multitouch multivariate mutation name namespace nanosecond navigation ngram npm npr nurbs obj octtree oklab oklch optical origami ortho osc output padding pairing\-heap patch pbm percent perimeter perspective pfm phenotype php plastic\-number pointcloud poisson polar porter\-duff power precision premultiply prime priority\-queue probabilistic property pyramid quadtree quantize querystring radix ramp rate\-limit ray reaction\-diffusion recursive red redo refract region relative rename repl resistance retina rfid ring roc rpn rulesaturation security separation serialport session shadertoy sharpen shear shift shortcodes iside\-effect signals similarity sixel skiawski plist slovakia slugify sma smoothmax smpte solver spa span spectrum speed sphere spiral splat srgb steering stem stereo stochastic storage stratified struct style svd symbolic t\-norm tab tags tangent tangle task tensor terrain tf\-idf threshold tiles timeout tllu trace transaction tree\-shaking triangulation trim trix tsne ttl tuple turkey turtle type types ulid undirected undo uniform unionfind unique units uri utc valence value\-semantics variance varint velocity vertex vex voip voltage volume watch wav waveshaper webp websocket weighted white wiki windowing wma wordsize worker writing xslt xy xyz ycbcr ycc zigzag zipper ## thi\.ng/umbrella(https://thi.ng/umbrella) 汇集了早期项目和使用语言的经验教训,并且是过去 5 年多的主要焦点,至少一半的 thi\.ng 项目是用 **TypeScript**(https://www.typescriptlang.org/)开发的,作为 **thi\.ng/umbrella**(https://thi.ng/umbrella)单体仓库的一部分。其中几个项目自 2015 年开始开发,在 2018 年初决定合并努力并在一个共同的伞下进一步发展。尽管这些包大多相互独立,但它们以更统一的哲学、共享基础设施、类型、接口、发布周期、示例、相互链接的文档等,处理更广泛的主题集合。 总计约**245k 行代码、文档、图表和 185 个完整文档化的示例项目**,上述标签云中的 500 多个主题大多由此单体仓库中的包涵盖。除了极少数例外,**不依赖任何第三方依赖**,所有伞内关系都在每个包的 readme 中明确声明。所有伞包均在 **Apache 软件许可证 2.0**(https://www.apache.org/licenses/LICENSE-2.0)下发布。 - 216 个包的分类列表(https://github.com/thi-ng/umbrella/blob/develop/README.md#projects) - 约 185 个示例项目列表(https://github.com/thi-ng/umbrella/blob/develop/examples/README.md) - 自动生成的文档(https://docs.thi.ng/) - 包和示例的基于标签的浏览器(https://demo.thi.ng/umbrella/thing-browser/) - 问题跟踪器(https://github.com/thi-ng/umbrella/issues) - 讨论论坛(https://github.com/thi-ng/umbrella/discussions) - Wiki(https://github.com/thi-ng/umbrella/wiki) - 贡献指南(https://github.com/thi-ng/umbrella/blob/develop/CONTRIBUTING.md) 下面的热图时间线提供了各种包以及它们何时添加/纳入伞单体仓库的概览。这里显示的起始日期不一定表示项目的开始,只表示包何时以其当前形式添加和重构。 ## 获奖作品与工作坊,由开源驱动 “水涨船高。”早在 2006 年以 **toxiclibs** 开始,本集合中的项目已被广泛应用于许多领域和行业(并帮助启动了多家初创公司),包括建筑、产品与交互设计、数据可视化、数字制造、室内设计、按需印刷、医学、品牌推广、动态图形/VFX、游戏开发、音频制作、艺术装置等。 thi\.ng 项目在其中发挥关键作用的几个项目曾获得国际设计奖项的提名和获奖,包括戛纳狮子奖、D&AD、红点设计奖、英国年度设计奖、照明设计奖、字体指导俱乐部奖、Media Guardian 创新奖。 教育和作为教学工具的使用同样是长期运行的项目目标。多年来,我们的许多项目已在世界各地的学校、大学、工作坊和节日中以此身份使用。Karsten 本人自 2008 年以来已教授数十次工作坊。 有关项目新闻、流通知和未来工作坊,请**在 Mastodon 上关注我们**(https://mastodon.thi.ng/@toxi)或**订阅我们的低频新闻通讯**(https://buttondown.email/thing)! ## 贡献者与赞助者 衷心感谢以下个人和组织支持这些项目的持续开发。 如果您想自己成为支持者,请访问我们的 **GitHub 赞助**(https://github.com/sponsors/postspectacular)或 **Patreon**(https://patreon.com/thing_umbrella)页面。非常感谢! 感谢以下组织通过过去的委托、合作、客户工作、讲座、工作坊和咨询为早期开发提供资金: - ACT Center Gwangju - Architecture Association (DRL) London - Barbican Centre London - The Bartlett (UCL) London - Bergische Universität Wuppertal - Bezalel Academy of Art Jerusalem - CADA Lisbon - CIID Copenhagen - Digital Domain - ETH Zürich - Google - Graphic Design Festival Breda - HEAD Geneva - Hirsch & Mann - Institute of Contemporary Arts London - Jason Bruges Studio - Kingston University London - Kunstuniversität Linz - Kurye Video Festival, Istanbul - Leeds College of Music - Lexus - London College of Fashion - Metropolitan University London - Moving Brands - Münster School of Architecture - Nike - Nokia - OFFF Lisbon - onedotzero - Open Data Institute - Resonate Festival Belgrade - SAC Städelschule Frankfurt - Science Museum London - Sensorium Festival Bratislava - Semipermanent Auckland - Sheffield Hallam University - Sint-Lukas University Brussels - Squint Opera - Technology Will Save Us - Tellart - Todays Art Festival, Den Haag - Troika UK - Universal Everything - Universidade Católica Portuguesa Porto - Umeå Institute of Design - University for the Creative Arts Epsom - University of Applied Sciences Augsburg - University of Lincoln - Watershed Bristol - Westminster University London - Wieden + Kennedy - Winchester School of Art - Wolff Olins - Victoria & Albert Museum London

相似文章

Bonsai:Janestreet 的 UI 库

Hacker News Top

Bonsai 是 Jane Street 的开源 UI 库,用于在 OCaml 中构建响应式 Web 应用程序,具有可组合状态、增量渲染和模板语言等特点。