SuperAPI AI 工具集

threejs-math

编程与开发

查看项目

更新于 10-15 21:48

技能介绍

用途:当用户涉及向量/矩阵运算顺序、applyQuaternion、lookAt、世界坐标与局部坐标变换,包围体 Box3/Sphere 的包含与相交测试,或 Ray 与 Plane、Frustum 的测试(不涉及完整拾取流程)时使用本技能。触发词包括 Vector3、Matrix4、Quaternion、Box3、Ray、Frustum,以及中文的向量、矩阵、四元数、包围盒。

主要能力:覆盖 three.js 核心数学类型,包括 Vector2/3/4、Matrix3/4、Quaternion、Euler、Color、Box2/Box3、Sphere、Plane、Ray、Line3、Triangle、Frustum 与柱面/球面坐标;并指向 Addons → Math 中的扩展结构(如 Octree、OBB)作为游戏向空间加速的参考。

使用方式:按 three.js 示例约定,向量在左侧与矩阵相乘;进行世界空间查询前先调用 updateMatrixWorld(该部分归 threejs-objects)。粗略包围盒可用 Box3().setFromObject(object),再按需细化。碰撞类检查可用 ray.intersectBox、sphere.containsPoint 等。随机采样可用 MeshSurfaceSampler 在网格表面分布点。

边界划分:原始数学类型归本技能;Raycaster 与 layers 拾取归 threejs-objects;QuaternionKeyframeTrack 播放归 threejs-animation。关键帧轨道求值超出本技能范围。

常见陷阱与最佳实践:Euler 存在万向节锁,任意旋转优先使用四元数;在热循环中复用临时向量以减少 GC 抖动;视锥剔除辅助工具因版本而异,需对照所用 three 版本验证;比较运算需注意数值稳定性(epsilon)。

文档与版本:核心数学类型列于官方 Math 章节,扩展工具(Octree、OBB 等)位于 Addons → Math;Global 章节还列出包装、混合等常量,有时需与材质配合使用。参考链接:https://threejs.org/docs/#Math、https://threejs.org/docs/MathUtils.html、https://threejs.org/docs/Ray.html。