When to use this skill
ALWAYS use this skill when the user mentions:
- Vector/matrix math order,
applyQuaternion, lookAt, world vs local transforms
- Bounding volumes
Box3/Sphere, containment/intersection tests
Ray vs Plane vs Frustum tests (without full picking pipeline)
IMPORTANT: math vs objects vs animation
| Need |
Skill |
| Raw math types |
threejs-math |
Raycaster + layers picking |
threejs-objects |
| QuaternionKeyframeTrack playback |
threejs-animation |
Trigger phrases include:
- "Vector3", "Matrix4", "Quaternion", "Box3", "Ray", "Frustum"
- "向量", "矩阵", "四元数", "包围盒"
How to use this skill
- Conventions: multiply vectors by matrices on the left as three.js examples show; call
updateMatrixWorld before world-space queries (threejs-objects).
- Bounding:
Box3().setFromObject(object) for rough bounds; refine per need.
- Collision-ish checks:
ray.intersectBox, sphere.containsPoint, etc., per docs.
- Addon structures:
Octree/OBB for games—cite addon pages, avoid copying full API tables here.
- Color:
Color conversions relate to materials/textures—cross-link.
- Random sampling:
MeshSurfaceSampler for distributing points on meshes.
See examples/workflow-ray-aabb.md.
Doc map (official)
Scope
- In scope: Core Math types; addon math entries as pointers.
- Out of scope: Keyframe track evaluation beyond type references (animation skill).
Common pitfalls and best practices
- Euler gimbal lock—prefer quaternions for arbitrary rotations.
- Reusing temporary vectors reduces GC thrash in hot loops.
- Frustum culling helpers vary—verify against your three version.
Documentation and version
Core math types are listed under Math; addon utilities (Octree, OBB, …) appear under Addons → Math in three.js docs. Global also lists constants (e.g. wrapping, blending) sometimes needed alongside materials.
Agent response checklist
When answering under this skill, prefer responses that:
- Link the concrete type (
Vector3, Matrix4, Quaternion, …) from the docs.
- Send
AnimationMixer / track math to threejs-animation when time-sampled.
- Send
Raycaster picking flows to threejs-objects when interaction is the goal.
- Mention numeric stability (epsilon) where comparisons matter.
- Point to Addons → Math for game-oriented structures when users need spatial acceleration.
References
Keywords
English: vector, matrix, quaternion, euler, box3, sphere, ray, frustum, three.js
中文: 向量、矩阵、四元数、欧拉角、包围盒、射线、three.js
能力边界
✅ 适用场景
- 当你需要使用此技能对应的技术栈时
- 当项目需要遵循最佳实践时
- 当需要快速上手或深入理解核心概念时
⚠️ 需要注意
- 复杂业务逻辑需要结合具体场景调整
- 性能优化需要根据实际数据量评估
❌ 不适用场景
常见陷阱 (Gotchas)
- 版本兼容性:注意框架版本与依赖库的兼容性,不同版本 API 可能有差异
- 配置文件格式:配置文件格式错误是最常见的问题,建议使用编辑器的语法检查
- 环境变量:确保所有必要的环境变量已正确设置,敏感信息不要硬编码
- 依赖冲突:多版本共存时注意依赖冲突,使用 lock 文件锁定版本
- 性能陷阱:大数据量场景下注意性能优化,避免 N+1 查询等常见问题
使用流程
Step 1: 环境准备
确保开发环境已安装必要的依赖和工具。
Step 2: 配置初始化
根据项目需求进行基础配置。
Step 3: 核心功能使用
按照示例代码实现核心功能。
Step 4: 测试验证
运行测试确保功能正常。
Step 5: 部署上线
完成开发后进行部署和监控。
1---2name: threejs-math3description: three.js math library: Vector2/3/4, Matrix3/4, Quaternion, Euler, Color, Box2/Box3, Sphere, Plane, Ray, Line3, Triangle, Frustum, Cylindrical/Spherical coords, MathUtils, and Interpolant base classes; addon math utilities such as OBB, Octree, Capsule, ConvexHull, MeshSurfaceSampler. Use for transforms, intersection tests, and spatial queries; for keyframe interpolation tied to AnimationMixer use threejs-animation; for picking implementation use threejs-objects with Raycaster.4---56## When to use this skill78**ALWAYS use this skill when the user mentions:**910- Vector/matrix math order, `applyQuaternion`, `lookAt`, world vs local transforms11- Bounding volumes `Box3`/`Sphere`, containment/intersection tests12- `Ray` vs `Plane` vs `Frustum` tests (without full picking pipeline)1314**IMPORTANT: math vs objects vs animation**1516| Need | Skill |17|------|--------|18| Raw math types | **threejs-math** |19| `Raycaster` + layers picking | **threejs-objects** |20| QuaternionKeyframeTrack playback | **threejs-animation** |2122**Trigger phrases include:**2324- "Vector3", "Matrix4", "Quaternion", "Box3", "Ray", "Frustum"25- "向量", "矩阵", "四元数", "包围盒"2627## How to use this skill28291. **Conventions**: multiply vectors by matrices on the left as three.js examples show; call `updateMatrixWorld` before world-space queries (**threejs-objects**).302. **Bounding**: `Box3().setFromObject(object)` for rough bounds; refine per need.313. **Collision-ish checks**: `ray.intersectBox`, `sphere.containsPoint`, etc., per docs.324. **Addon structures**: `Octree`/`OBB` for games—cite addon pages, avoid copying full API tables here.335. **Color**: `Color` conversions relate to materials/textures—cross-link.346. **Random sampling**: `MeshSurfaceSampler` for distributing points on meshes.3536See [examples/workflow-ray-aabb.md](examples/workflow-ray-aabb.md).3738## Doc map (official)3940| Docs section | Representative links |41|--------------|----------------------|42| Math | https://threejs.org/docs/Vector3.html |43| Math | https://threejs.org/docs/Matrix4.html |44| Math | https://threejs.org/docs/Quaternion.html |45| Math | https://threejs.org/docs/Ray.html |4647## Scope4849- **In scope:** Core Math types; addon math entries as pointers.50- **Out of scope:** Keyframe track evaluation beyond type references (animation skill).5152## Common pitfalls and best practices5354- Euler gimbal lock—prefer quaternions for arbitrary rotations.55- Reusing temporary vectors reduces GC thrash in hot loops.56- Frustum culling helpers vary—verify against your three version.5758## Documentation and version5960Core math types are listed under [Math](https://threejs.org/docs/#Math); addon utilities (`Octree`, `OBB`, …) appear under **Addons → Math** in [three.js docs](https://threejs.org/docs/). [Global](https://threejs.org/docs/#Global) also lists constants (e.g. wrapping, blending) sometimes needed alongside materials.6162## Agent response checklist6364When answering under this skill, prefer responses that:65661. Link the concrete type (`Vector3`, `Matrix4`, `Quaternion`, …) from the docs.672. Send `AnimationMixer` / track math to **threejs-animation** when time-sampled.683. Send `Raycaster` picking flows to **threejs-objects** when interaction is the goal.694. Mention numeric stability (epsilon) where comparisons matter.705. Point to **Addons → Math** for game-oriented structures when users need spatial acceleration.7172## References7374- https://threejs.org/docs/#Math75- https://threejs.org/docs/MathUtils.html76- https://threejs.org/docs/Ray.html7778## Keywords7980**English:** vector, matrix, quaternion, euler, box3, sphere, ray, frustum, three.js8182**中文:** 向量、矩阵、四元数、欧拉角、包围盒、射线、three.js8384## 能力边界8586### ✅ 适用场景87- 当你需要使用此技能对应的技术栈时88- 当项目需要遵循最佳实践时89- 当需要快速上手或深入理解核心概念时9091### ⚠️ 需要注意92- 复杂业务逻辑需要结合具体场景调整93- 性能优化需要根据实际数据量评估9495### ❌ 不适用场景96- 不相关的技术栈或框架97- 需要完全自定义的特殊场景9899## 常见陷阱 (Gotchas)1001011. **版本兼容性**:注意框架版本与依赖库的兼容性,不同版本 API 可能有差异1022. **配置文件格式**:配置文件格式错误是最常见的问题,建议使用编辑器的语法检查1033. **环境变量**:确保所有必要的环境变量已正确设置,敏感信息不要硬编码1044. **依赖冲突**:多版本共存时注意依赖冲突,使用 lock 文件锁定版本1055. **性能陷阱**:大数据量场景下注意性能优化,避免 N+1 查询等常见问题106107## 使用流程108109### Step 1: 环境准备110确保开发环境已安装必要的依赖和工具。111112### Step 2: 配置初始化113根据项目需求进行基础配置。114115### Step 3: 核心功能使用116按照示例代码实现核心功能。117118### Step 4: 测试验证119运行测试确保功能正常。120121### Step 5: 部署上线122完成开发后进行部署和监控。