Archive v127—The Garden →

深夜玻璃温室。滚动是行走,光标是萤火,花瓣服从风与重力。
这里没有按钮堆砌——只有会呼吸的光。

THREE × MATTER × GSAP
03

光线的三条法则

温室初见

I

柔光

晨雾与暮色之间的那一抹紫。光线不刺眼,却足以照亮每一页笔记。

II

风场

光标不是装饰,是风。靠近时花瓣退让,静止时它们回到呼吸的轨道。

III

手记

灵感不必宏大。一句观察、一次调试、一场雨后的散步,都可以成为笔记。

04

Matter.js · Constraints

物理花园

巨型标题是坚硬的地面。花瓣服从重力——拖拽、抛掷、滚动施力。这是温室里唯一允许失控的地方。

官方源码 · matter-js demo / example.constraints.js
// https://brm.io/matter-js/demo/#constraints — 本页即按此逐参数运行
var Engine = Matter.Engine,
    Render = Matter.Render,
    Runner = Matter.Runner,
    Composite = Matter.Composite,
    Constraint = Matter.Constraint,
    MouseConstraint = Matter.MouseConstraint,
    Mouse = Matter.Mouse,
    Bodies = Matter.Bodies;

var engine = Engine.create(),
    world = engine.world;

var render = Render.create({
    element: document.body,
    engine: engine,
    options: { width: 800, height: 600, showAngleIndicator: true }
});
Render.run(render);
var runner = Runner.create();
Runner.run(runner, engine);

// —— ① stiff global anchor
var body = Bodies.polygon(150, 200, 5, 30),
    constraint = Constraint.create({ pointA: { x: 150, y: 100 }, bodyB: body, pointB: { x: -10, y: -10 } });
Composite.add(world, [body, constraint]);
// —— ② soft global anchor
body = Bodies.polygon(280, 100, 3, 30);
constraint = Constraint.create({ pointA: { x: 280, y: 120 }, bodyB: body, pointB: { x: -10, y: -7 }, stiffness: 0.001 });
Composite.add(world, [body, constraint]);
// —— ③ damped soft global anchor
body = Bodies.polygon(400, 100, 4, 30);
constraint = Constraint.create({ pointA: { x: 400, y: 120 }, bodyB: body, pointB: { x: -10, y: -10 }, stiffness: 0.001, damping: 0.05 });
Composite.add(world, [body, constraint]);
// —— ④ revolute single
body = Bodies.rectangle(600, 200, 200, 20);
var ball = Bodies.circle(550, 150, 20);
constraint = Constraint.create({ pointA: { x: 600, y: 200 }, bodyB: body, length: 0 });
Composite.add(world, [body, ball, constraint]);
// —— ⑤ revolute multi
body = Bodies.rectangle(500, 400, 100, 20, { collisionFilter: { group: -1 } });
ball = Bodies.circle(600, 400, 20, { collisionFilter: { group: -1 } });
constraint = Constraint.create({ bodyA: body, bodyB: ball });
Composite.add(world, [body, ball, constraint]);
// —— ⑥ stiff multi
var a = Bodies.polygon(100, 400, 6, 20),
    b = Bodies.polygon(200, 400, 1, 50);
constraint = Constraint.create({ bodyA: a, pointA: { x: -10, y: -10 }, bodyB: b, pointB: { x: -10, y: -10 } });
Composite.add(world, [a, b, constraint]);
// —— ⑦ soft multi
a = Bodies.polygon(300, 400, 4, 20);
b = Bodies.polygon(400, 400, 3, 30);
constraint = Constraint.create({ bodyA: a, pointA: { x: -10, y: -10 }, bodyB: b, pointB: { x: -10, y: -7 }, stiffness: 0.001 });
Composite.add(world, [a, b, constraint]);
// —— ⑧ damped soft multi
a = Bodies.polygon(500, 400, 6, 30);
b = Bodies.polygon(600, 400, 7, 60);
constraint = Constraint.create({ bodyA: a, pointA: { x: -10, y: -10 }, bodyB: b, pointB: { x: -10, y: -10 }, stiffness: 0.001, damping: 0.1 });
Composite.add(world, [a, b, constraint]);

// 四面静态墙
Composite.add(world, [
    Bodies.rectangle(400, 0, 800, 50, { isStatic: true }),
    Bodies.rectangle(400, 600, 800, 50, { isStatic: true }),
    Bodies.rectangle(800, 300, 50, 600, { isStatic: true }),
    Bodies.rectangle(0, 300, 50, 600, { isStatic: true })
]);

var mouse = Mouse.create(render.canvas),
    mouseConstraint = MouseConstraint.create(engine, {
        mouse: mouse,
        constraint: { angularStiffness: 0, render: { visible: false } }
    });
Composite.add(world, mouseConstraint);
render.mouse = mouse;
Render.lookAt(render, { min: { x: 0, y: 0 }, max: { x: 800, y: 600 } });

拖拽 · 滚动 · 点击

暴风雨过境

光在裂缝里放电。整座温室,屏住呼吸。

05

Selected Works · Grown in this garden

花园作品

AI Agent Handbook — knowledge atlas grown in a dark greenhouse
W.01

AI Agent 手册 · Handbook

从原理到生产的一本花园地图册:LLM 与注意力、Agent 循环、工具协议、记忆与 RAG、规划、多智能体、评估与安全。

  • LLM
  • Agent
  • Docs
了解此项目 ↗
Auto DevOps — pipeline anchors and chains sculpture
W.02

Auto DevOps · 智能运维

AI 驱动的智能运维管理平台:像温室的自动灌溉一样,让部署、监控与自愈在 TypeScript 管道里安静运转。

  • TypeScript
  • DevOps
  • AI
了解此项目 ↗
Mars Rover 3D — rover orbiting luminous terrain
W.03

Mars Rover 3D · 火星车

浏览器里的红色星球:Three.js 渲染的火星车与地表漫游,把「探索」种进这座紫色温室的另一端。

  • Three.js
  • 3D
  • WebGL
了解此项目 ↗
Night glass greenhouse filled with drifting violet petals and a shaft of light

Grown in the dark

黑暗,是这座温室最深的底色

06

Lumen Bloom · interactive 3D specimen

光之标本

在最安静的时刻

轻轻盛开

LUMEN VIOLA 不追逐喧闹。它邀请你放慢一拍——看清虹彩、物理与留白如何共同完成一场小型演出。

09

Field Notes

园中手记

把界面做成一座会呼吸的温室:
留白是空地,动效是微风,物理是真实的重量。

— LUMEN VIOLA · 设计备忘
N.01

一束冷色信号

全站几乎单色紫。唯一的青只出现在光标与 HUD——破局点克制到一次就够。

N.02

有目的的动效

每一次出现都回答一个问题:用户该看向哪里?少了干扰,多了叙事。

N.03

一个签名时刻

整页只留一处「失控」——物理花园。花瓣砸在标题上,比任何形容词都诚实。

Visit

欢迎来访

温室永远半掩着门。若你想聊聊设计、代码,或只是分享一句园中所见——

dominicjamil404@gmail.com