在 Three.js 中,
THREE.Euler
类用于表示 3D 空间中的欧拉角旋转。欧拉角是通过绕三个主轴(X、Y、Z 轴)的角度来定义的旋转。
eorder 使用时要注意这里的四元数是指的 Eular 中四元数的第四元,即参数中的 order
Euler 有五个属性 十个方法
使用示例
THREE。Euler( x : Float, y : Float, z : Float, order : String )
x - (optional) 用弧度表示x轴旋转量。 默认值是 0。
y - (optional) 用弧度表示y轴旋转量。 默认值是 0。
z - (optional) 用弧度表示z轴旋转量。 默认值是 0。
order - (optional) 表示旋转顺序的字符串,默认为'XYZ'(必须是大写)。
// 创建一个欧拉角对象,绕 Y 轴旋转 90 度
const euler = new THREE.Euler(0, Math.PI / 2, 0, 'XYZ');
// 将此旋转应用于一个物体
object.rotation.copy(euler);
属性
- isEuler : Boolean 判断是欧拉角
- order : String order值应用于旋转顺序。默认值为 'XYZ',这意味着对象将首先是 绕X轴旋转,然后是Y轴,最后是Z轴。其他可能性包括: 'YZX', 'ZXY', 'XZY', 'YXZ'和'ZYX'。这些必须是大写字母。 Three.js 使用intrinsic Tait-Bryan angles(Yaw、Pitch、Roll)。 这意味着旋转是在本地坐标系下进行的。也就是说,对于“XYZ”顺序,首先是围绕local-X轴旋转(与world- x轴相同), 然后是local-Y(现在可能与world y轴不同),然后是local-Z(可能与world z轴不同)。
- x : Float 当前x分量的值。
- y : Float 当前y分量的值。
- z : Float 当前z分量的值。
方法
- copy ( euler : Euler ) : this 将 euler 的属性拷贝到当前对象。
- clone () : Euler 返回一个与当前参数相同的新欧拉角。
- equals ( euler : Euler ) : Boolean 检查 euler 是否与当前对象相同。
- fromArray ( array : Array ) : this 长度为3或4的一个 array 。array[3] 是一个可选的 order 参数。 将欧拉角的x分量设置为 array[0]。 将欧拉角的y分量设置为 array[1]。 将欧拉角的z分量设置为 array[2]。 将array[3]设置给欧拉角的 order 。可选。
- eorder ( newOrder : String ) : this 通过这个欧拉角创建一个四元数,然后用这个四元数和新顺序设置这个欧拉角。 警告: 这将弃用旋转信息。
const euler = new THREE.Euler(Math.PI / 4, Math.PI / 4, Math.PI / 4, 'XYZ');
// 通过欧拉角创建四元数
const quaternion = new THREE.Quaternion();
quaternion.setFromEuler(euler);
// 打印四元数结果
console.log('四元数:', quaternion);
// 改变欧拉角的顺序为 'YXZ'
euler.order = 'YXZ';
// 重新从四元数设置欧拉角,这将使用新顺序 'YXZ'
euler.setFromQuaternion(quaternion);
// 警告:由于旋转顺序改变,原来的旋转信息可能无法正确恢复
console.log('修改顺序后的欧拉角:', euler);
- set ( x : Float, y : Float, z : Float, order : String ) : this x - 用弧度表示x轴旋转量。 y - 用弧度表示y轴旋转量。 z - 用弧度表示z轴旋转量。 order - (optional) 表示旋转顺序的字符串。 设置该欧拉变换的角度和旋转顺序 order。
- setFromRotationMatrix ( m : Matrix4, order : String) : this m - Matrix4 矩阵上面的3x3部分是一个纯旋转矩阵rotation matrix (也就是不发生缩放) order - (可选参数) 表示旋转顺序的字符串。 使用基于 order 顺序的纯旋转矩阵来设置当前欧拉角。
// 创建一个 4x4 旋转矩阵
const matrix = new THREE.Matrix4();
matrix.makeRotationX(Math.PI / 4); // 创建绕 X 轴旋转 45 度的矩阵
// 创建欧拉角对象
const euler = new THREE.Euler();
// 从旋转矩阵中提取欧拉角并设置到 euler 对象中
euler.setFromRotationMatrix(matrix, 'XYZ');
console.log('从旋转矩阵提取的欧拉角:', euler);
- setFromQuaternion ( q : Quaternion, order : String ) : this q - 归一化的四元数。 order - (可选参数) 表示旋转顺序的字符串。 根据 order 指定的方向,使用归一化四元数设置这个欧拉变换的角度。
- setFromVector3 ( vector : Vector3, order : String ) : this vector - Vector3. order - (可选参数) 表示旋转顺序的字符串。 设置 x, y and z 并且选择性更新 order。
- toArray ( array : Array, offset : Integer ) : Array array - (可选参数) 存储欧拉角的数组。 offset (可选参数) 数组的偏移量。 返回一个数组:[x, y, z, order ]。