Skip to content

Intermact API Reference

本文档总览 v0.1–v1.0(Phase-1 / Phase-2 / Phase-3) 公共 API 的架构与入口;各符号页由 TypeDocpackages/*/src 的导出项与 TSDoc 注释自动生成。Phase-3(PCG / 3D / 序列化导出 / 插件)的 API 地图见下文 §Phase-3,概念教程见 PCG / 3D / 导出嵌入 / 性能 / 扩展系统

完整契约与修订记录见仓库 dev-docs/design.md。概念性教程见 指南 · 架构概览

愿景与 API 边界

阶段版本主题与本文档关系
Phase-1v0.1可交互 Manim 替代品:2D 图元、可 seek 时间线、坐标轴、响应式调参总览 §Phase-1
Phase-2v0.2数理工具箱:Scale、LaTeX、Morph matching、交互拾取、布局总览 §Phase-2
Phase-3v1.0PCG、3D 全量、序列化/导出/嵌入、插件符号页 + 插件指南

核心执行模型:可 seek 时间线

Intermact 采用保留模(retained-mode)时间线design.md §3.2):

阶段职责关键 API
构建期注册对象;scene.play 向 Storyboard 追加轨道createProgram, buildProgram, Scene2D
播放期seek / update 纯函数求值;确定性快照Player, Track, RenderSnapshot

await scene.play(...) 是构建期语法糖,逻辑时钟瞬间推进,不消耗墙钟时间。

对象三层:定义 · 实例 · 运行时态

text
IMObject2D(不可变定义:几何 + trait)
    └── scene.register(...) → RegisteredObject2D(动画句柄:create / moveTo / morphTo …)
            └── Track 求值 → RuntimeState2D(位置、reveal、opacity、geometryOverride …)

Scene · Camera · Canvas 解耦

与 Manim 不同,场景、相机、画布分层(design.md §9–10):

角色关键 API
Scene2D坐标域、对象注册、getAxes、编排 playScene2D
Camera正交相机描述,挂载到视口createCamera2D
CanvasReact 入口:构建 program、R3F 画布、时间线叠层IntermactCanvas

坐标变换:CoordinateTransform2D(abs/rel、极坐标)。轴对象通过 Scene2D.getAxes 注册,刻度由 Scale 生成(Phase-2)。

包分层与渲染管线

text
@intermact/react
  └── @intermact/render-r3f     SceneView、computeFit
        └── @intermact/render-three   stroke/fill 几何、ThreeSceneView
              └── @intermact/core     禁止 React / three / DOM
职责
@intermact/core模型、几何、时间线、响应式、Scale/构件/文本/交互;可 Node 无头运行
@intermact/render-threeRenderSnapshot → three.js 几何(stroke trim、earcut fill)
@intermact/render-r3fR3F 内 diff 更新、相机 fit、HiDPI
@intermact/reactIntermactCanvasuseSignal、时间线控件、Inspector

数据流:Player.getSnapshot()ThreeSceneView diff → R3F SceneView


Phase-1(v0.1):基础 2D 叙事

指南:程序与场景 · 时间线 · 几何 · 渲染 · 动画 · 坐标系 · 响应式

能力API 入口
2D 图元circle, rectangle, polygon, bezierCurve, arrow
Create / Fade / Move / TweenRegisteredObject2D, compileSpec
编排sequence, parallel, stagger, wait
坐标与轴CoordinateTransform2D, Scene2D.getAxes
响应式调参signal, derived, tweenSignal, useSignal
副作用(不可 seekcall

Phase-2(v0.2):数理工具箱

指南:Scale · 数理构件 · Morph · 文本与 LaTeX · 交互 · 布局与 Inspector

Scale 与刻度(M7)

能力API 入口
标度类型linearScale, logScale, normalizeScale
刻度生成numericTicks
轴句柄createAxesHandle, AxesHandlec2p / xScale / yScale

数理构件库(M8)

能力API 入口
坐标平面numberLine, numberPlane, polarPlane, complexPlane
曲线与积分functionGraph, parametricGraph, areaUnderCurve, riemannRectangles, tangentLine
表达与标注matrixObject, tableObject, brace, decimalNumber

Morph 与分部匹配(M9)

策略API 入口
arc-length / anchor / matching / cross-fademorph, transformMatching
复合对象部件 keygroup2D
实例方法RegisteredObject2D.morphTo, transformMatchingTo

文本与 LaTeX(M10)

能力API 入口
字体loadOutlineFontFromBuffer, setDefaultFont, createAssetManager
文本对象textObject, glyphText
LaTeXlayoutMathJaxLatex, latexObjectFromGlyphs
Writing 动画glyphLocalReveal, computeGlyphRevealSpans
公式分部变形transformMatchingTex(token → 部件 key,复用 matching)

交互系统(M11)

能力API 入口
可拖拽源draggablePoint, draggableValue, draggablePointSource, draggableValueSource
命中测试hitTest, hitProxy, interactive
拾取辅助pickRectFromObject, pickBandFromObject

布局与 Inspector(M12)

能力API 入口
相对排版LayoutHandleRegisteredObject2D.layoutalignTo / nextTo / arrange / fitTo
布局句柄工厂createLayoutHandle
开发工具Inspector(React 侧场景树 / 信号 / 快照调试)

Phase-3(v1.0):PCG · 3D · 序列化导出 · 插件

指南:程序化生成 · 3D 场景与相机 · 导出、分享与嵌入 · 性能与大数据 · 扩展系统

PCG 程序化生成(M13)

能力API 入口
参数 / 点阵 / 铺砌parametricCurve2D, lattice, tiling
分形 / 规则fractal, recursiveTree, lSystem, cellularAutomaton, cellularAutomatonFrames
functionGraph, isoline, heatmap, streamlines
图 / 数据graphObject, barChart, scatter, lineChart, mapData
组合算子transformObject, repeatObject, instanceField, mapPoints, along, booleanOp

3D 全量(M14)

能力API 入口
场景 / 相机Scene3D, RegisteredCamera3D, CoordinateTransform3D
3D 工厂polyline3D, curve3D, meshObject, surface3D, pointCloud3D, axes3D
标量场等值面isosurface, marchingCubes
嵌套子场景RegisteredObject2D.layout · render(scene, camera)(render-r3f RenderedScene

序列化 / 导出 / 嵌入(M15)

能力API 入口
序列化serialize, deserialize
分享链接encodeShareUrl, decodeShareUrl, SerializedCanvas
无头定帧snapshotToSVG, sampleFrames, sampleFrameHashes
视频 / GIFrecordCanvasVideo, captureFrameSequencePng, encodeGif, exportCanvasGif
嵌入defineIntermactEmbed, buildEmbedIframe

性能与扩展(M16 / M17)

能力API 入口
GPU 实例化 / 点云instanceField, pointCloud3D
注册表createRegistries, globalRegistries
插件definePlugin, installPlugin, defineObjectType, defineGenerator
生成器分发runGenerator, selectRenderer

响应式层(交互态)

对齐 Manim ValueTracker + add_updaterdesign.md §8),用于参数驱动的几何重算

每帧:Player.prepareFrameReactiveEngine.flush → 再生成 RenderSnapshot

如何查阅符号

  1. 从下方 Packages 进入各包索引页。
  2. 侧边栏按 Classes / Interfaces / Functions 浏览(含 Phase-2 全部导出)。
  3. 修改 API 文档请编辑源码 TSDoc,运行 pnpm run gen:reference 重新生成。

Packages

Intermact v1.0 — 文档覆盖 Phase-1 / Phase-2 / Phase-3(全阶段)