手册
- 起步
- 进阶
- 构建工具
参考
- 动画
- 动画 / 轨道
- 音频
- 摄像机
- 常量
- 核心
- 核心 / BufferAttributes
- 附件
- 附件 / 核心
- 附件 / 曲线
- 附件 / 物体
- 几何体
- 立方缓冲几何体(BoxGeometry)
- 圆形缓冲几何体(CircleGeometry)
- 圆锥缓冲几何体(ConeGeometry)
- 圆柱缓冲几何体(CylinderGeometry)
- 十二面缓冲几何体(DodecahedronGeometry)
- 边缘几何体(EdgesGeometry)
- 挤压缓冲几何体(ExtrudeGeometry)
- 二十面缓冲几何体(IcosahedronGeometry)
- 车削缓冲几何体(LatheGeometry)
- 八面缓冲几何体(OctahedronGeometry)
- 参数化缓冲几何体(ParametricGeometry)
- 平面缓冲几何体(PlaneGeometry)
- 多面缓冲几何体(PolyhedronGeometry)
- 圆环缓冲几何体(RingGeometry)
- 形状缓冲几何体(ShapeGeometry)
- 球缓冲几何体(SphereGeometry)
- 四面缓冲几何体(TetrahedronGeometry)
- 文本缓冲几何体(TextGeometry)
- 圆环缓冲几何体(TorusGeometry)
- 圆环缓冲扭结几何体(TorusKnotGeometry)
- 管道缓冲几何体(TubeGeometry)
- 网格几何体(WireframeGeometry)
- 辅助对象
- 灯光
- 灯光 / 阴影
- 加载器
- 加载器 / 管理器
- 材质
- 基础线条材质(LineBasicMaterial)
- 虚线材质(LineDashedMaterial)
- 材质(Material)
- 基础网格材质(MeshBasicMaterial)
- 深度网格材质(MeshDepthMaterial)
- MeshDistanceMaterial
- Lambert网格材质(MeshLambertMaterial)
- MeshMatcapMaterial
- 法线网格材质(MeshNormalMaterial)
- Phong网格材质(MeshPhongMaterial)
- 物理网格材质(MeshPhysicalMaterial)
- 标准网格材质(MeshStandardMaterial)
- MeshToonMaterial
- 点材质(PointsMaterial)
- 原始着色器材质(RawShaderMaterial)
- 着色器材质(ShaderMaterial)
- 阴影材质(ShadowMaterial)
- 点精灵材质(SpriteMaterial)
- 数学库
- 数学库 / 插值
- 物体
- 渲染器
- 渲染器 / 着色器
- 渲染器 / WebXR
- 场景
- 纹理贴图
示例
- 动画
- 控制
- 几何体
- 辅助对象
- 灯光
- 加载器
- 物体
- 后期处理
- 导出器
- 数学库
- QuickHull
- 渲染器
- 实用工具
开发者参考
- 差异化支持
- WebGL 渲染器
四元数(Quaternion)
该类实现了 quaternion 。
四元数在three.js中用于表示 rotation (旋转)。
代码示例
const quaternion = new THREE.Quaternion(); quaternion.setFromAxisAngle( new THREE.Vector3( 0, 1, 0 ), Math.PI / 2 ); const vector = new THREE.Vector3( 1, 0, 0 ); vector.applyQuaternion( quaternion );
构造函数
Quaternion( x : Float, y : Float, z : Float, w : Float )
x - x 坐标
y - y 坐标
z - z 坐标
w - w 坐标
属性
.x : Float
.y : Float
.z : Float
.w : Float
方法
.angleTo ( q : Quaternion ) : Float
以弧度返回该四元数与四元数 q 之间的夹角。
.clone () : Quaternion
.conjugate () : Quaternion
返回该四元数的旋转共轭。 四元数的共轭表示的是,围绕旋转轴在相反方向上的相同旋转。
.copy ( q : Quaternion ) : Quaternion
.equals ( v : Quaternion ) : Boolean
v - 用于进行比较的四元数。
将四元数 v 的 x、 y、 z 和 w 的属性 与当前四元数的对应属性相比较,以确定它们是否表示相同的旋转。
.dot ( v : Quaternion ) : Float
计算四元数 v 与当前四元数的dot product(点积)。
.fromArray ( array : Array, offset : Integer ) : Quaternion
array - 用于构造四元数的形如(x, y, z, w)的数组。
offset - (可选)数组的偏移量。(译者注:使用数组中从第offset元素算起的四个元素)
从一个数组来设置四元数的 x、 y、z 和 w 的属性。
.identity () : Quaternion
设置该四元数为 identity 四元数,即表示“不旋转”的四元数。
.invert () : Quaternion
翻转该四元数 —— 计算 conjugate 。假定该四元数具有单位长度。
.length () : Float
计算四元数的 Euclidean length (欧几里得长度,直线长度),视为一个四维向量。
.lengthSq () : Float
计算四元数 Euclidean length (欧几里得长度,直线长度)的平方,视为一个四维向量。 如果要比较两个四元数的长度,这可能会十分有用, 因为这比 length() 的效率稍高一些。
.normalize () : Quaternion
Normalizes(归一化)四元数 —— 即计算与该四元数具有相同旋转、但长度为1的四元数。
.multiply ( q : Quaternion ) : Quaternion
将该四元数与q相乘。
.multiplyQuaternions ( a : Quaternion, b : Quaternion ) : Quaternion
将该四元数设为 a x b 。
改编自 here 所概述的方法。
.premultiply ( q : Quaternion ) : Quaternion
Pre-multiplies this quaternion by q.
.rotateTowards ( q : Quaternion, step : Float ) : Quaternion
q - The target quaternion.
step - The angular step in radians.
Rotates this quaternion by a given angular step to the defined quaternion q. The method ensures that the final quaternion will not overshoot q.
.slerp ( qb : Quaternion, t : Float ) : Quaternion
qb - The other quaternion rotation
t - interpolation factor in the closed interval [0, 1].
Handles the spherical linear interpolation between quaternions. t represents the amount of rotation between this quaternion (where t is 0) and qb (where t is 1). This quaternion is set to the result. Also see the static version of the slerp below.
// rotate a mesh towards a target quaternion mesh.quaternion.slerp( endQuaternion, 0.01 );
.slerpQuaternions ( qa : Quaternion, qb : Quaternion, t : Float ) : this
Performs a spherical linear interpolation between the given quaternions and stores the result in this quaternion.
.set ( x : Float, y : Float, z : Float, w : Float ) : Quaternion
.setFromAxisAngle ( axis : Vector3, angle : Float ) : Quaternion
从由 axis(轴) 和 angle(角度)所给定的旋转来设置该四元数。
改编自 here 所述的方法。
假定Axis已被归一化,angle以弧度来表示。
.setFromEuler ( euler : Euler ) : Quaternion
从由 Euler 角所给定的旋转来设置该四元数。
.setFromRotationMatrix ( m : Matrix4 ) : Quaternion
从m的旋转分量中来设置该四元数。
改编自 here 所概述的方法。
.setFromUnitVectors ( vFrom : Vector3, vTo : Vector3 ) : Quaternion
Sets this quaternion to the rotation required to rotate direction vector vFrom to direction vector vTo.
Adapted from the method here.
vFrom and vTo are assumed to be normalized.
.toArray ( array : Array, offset : Integer ) : Array
array - (可选)存储该四元数的数组。若未指定该参数,则将创建一个新数组。
offset - (可选)若指定了该值,结果将会被拷贝到该 Array。
在形如[x, y, z, w]的数组中,返回四元数中的数字元素。
.fromBufferAttribute ( attribute : BufferAttribute, index : Integer ) : this
attribute - 源 attribute。
index - attribute 中的索引。
从 attribute 中设置该四元数的x、 y、 z、 w属性。
静态方法
.slerpFlat ( dst : Array, dstOffset : Integer, src0 : Array, srcOffset0 : Integer, src1 : Array, srcOffset1 : Integer, t : Float ) : null
dst - The output array.
dstOffset - An offset into the output array.
src0 - The source array of the starting quaternion.
srcOffset0 - An offset into the array src0.
src1 - The source array of the target quatnerion.
srcOffset1 - An offset into the array src1.
t - Normalized interpolation factor (between 0 and 1).
Like the static slerp method above, but operates directly on flat arrays of numbers.
<!-- Note: Do not add non-static methods to the bottom of this page. Put them above theStatic Methods
-->源码
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论