在Three.js中,有许多常见的数据类型和使用方法,以下是一些常见的数据类型和它们的使用方法:

Vector3:

Vector3是用来表示3D向量的数据类型,它包含x、y和z三个分量。它经常被用来表示位置、方向和速度等信息。使用方法如下:

1
2
var position = new THREE.Vector3(1, 2, 3);
set(x, y, z):设置向量的x、y、z分量。

主要的api:

1
2
3
var vector = new THREE.Vector3();
vector.set(1, 2, 3);

add(v):将当前向量与另一个向量v相加。

1
2
3
var vector1 = new THREE.Vector3(1, 2, 3);
var vector2 = new THREE.Vector3(4, 5, 6);
vector1.add(vector2);

sub(v):将当前向量减去另一个向量v。

1
2
3
var vector1 = new THREE.Vector3(4, 5, 6);
var vector2 = new THREE.Vector3(1, 2, 3);
vector1.sub(vector2);

multiplyScalar(scalar):将当前向量乘以一个标量值。

1
2
var vector = new THREE.Vector3(1, 2, 3);
vector.multiplyScalar(2);

normalize():将当前向量归一化,使其长度为1。

1
2
var vector = new THREE.Vector3(1, 2, 3);
vector.normalize();

dot(v):计算当前向量与另一个向量v的点积。

1
2
3
var vector1 = new THREE.Vector3(1, 2, 3);
var vector2 = new THREE.Vector3(4, 5, 6);
var dotProduct = vector1.dot(vector2);

cross(v):计算当前向量与另一个向量v的叉积。

1
2
3
var vector1 = new THREE.Vector3(1, 0, 0);
var vector2 = new THREE.Vector3(0, 1, 0);
var crossProduct = vector1.cross(vector2);

Vector3对象的一些常见方法,它们用于对3D向量进行各种操作,如设置分量、加减乘除、归一化以及计算点积和叉积等。

Quaternion

四元数(Quaternion)是数学上的一个概念,用于描述三维空间中的旋转。它是由一个实部和三个虚部组成的超复数,通常表示为q = w + xi + yj + zk,其中w、x、y、z分别表示四元数的实部和虚部。四元数可以用来表示旋转,相比欧拉角和旋转矩阵,它具有很多优点,如没有万向锁问题、旋转插值更加平滑等。在计算机图形学、动画、游戏开发等领域,四元数被广泛应用于描述和处理物体的旋转变换。在Three.js等3D图形库中,也常常使用四元数来表示物体的旋转。

three.js中Quaternion的API包括以下常见方法:

set(x, y, z, w):设置四元数的值。

1
2
var quaternion = new THREE.Quaternion();
quaternion.set(0, 0, 0, 1);

identity():将四元数重置为单位四元数。

1
2
var quaternion = new THREE.Quaternion();
quaternion.identity();

multiply(q):将当前四元数与另一个四元数q相乘。

1
2
3
var quaternion1 = new THREE.Quaternion();
var quaternion2 = new THREE.Quaternion();
quaternion1.multiply(quaternion2);

clone():克隆当前四元数。

1
2
var quaternion = new THREE.Quaternion();
var cloneQuaternion = quaternion.clone();

setFromAxisAngle(axis, angle):根据轴和角度设置四元数的值。

1
2
3
4
var quaternion = new THREE.Quaternion();
var axis = new THREE.Vector3(0, 1, 0);
var angle = Math.PI / 2;
quaternion.setFromAxisAngle(axis, angle);

slerp(q, t):对当前四元数和另一个四元数q进行球面线性插值。

1
2
3
4
var quaternion1 = new THREE.Quaternion();
var quaternion2 = new THREE.Quaternion();
var t = 0.5; // 插值因子
quaternion1.slerp(quaternion2, t);

fromArray(array, offset):从数组中设置四元数的值。

1
2
3
var quaternion = new THREE.Quaternion();
var array = [0, 0, 0, 1];
quaternion.fromArray(array);

以上Quaternion对象的一些常见方法,它们用于对四元数进行各种操作,如设置值、重置、相乘、克隆、根据轴和角度设置值、球面线性插值以及从数组中设置值等。

Matrix4:

Matrix4是用来表示4x4矩阵的数据类型,它经常用于进行3D变换,比如旋转、缩放和平移等。使用方法如下:

1
2
var matrix = new THREE.Matrix4();
matrix.makeRotationX(Math.PI / 2);

Matrix4的API包括以下常见方法:

set(n11, n12, …, n44):设置矩阵的值。

1
2
3
4
5
var matrix = new THREE.Matrix4();
matrix.set(1, 0, 0, 0,
0, 1, 0, 0,
0, 0, 1, 0,
0, 0, 0, 1);

identity():将矩阵重置为单位矩阵。

1
2
var matrix = new THREE.Matrix4();
matrix.identity();

multiply(m):将当前矩阵与另一个矩阵m相乘。

1
2
3
var matrix1 = new THREE.Matrix4();
var matrix2 = new THREE.Matrix4();
matrix1.multiply(matrix2);

clone():克隆当前矩阵。

1
2
var matrix = new THREE.Matrix4();
var cloneMatrix = matrix.clone();

transpose():转置当前矩阵。

1
2
var matrix = new THREE.Matrix4();
matrix.transpose();

decompose(position, quaternion, scale):将当前矩阵分解为位置、四元数和缩放。

1
2
3
4
5
var matrix = new THREE.Matrix4();
var position = new THREE.Vector3();
var quaternion = new THREE.Quaternion();
var scale = new THREE.Vector3();
matrix.decompose(position, quaternion, scale);

fromArray(array, offset):从数组中设置矩阵的值。

1
2
3
var matrix = new THREE.Matrix4();
var array = [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1];
matrix.fromArray(array);

这些是Matrix4对象的一些常见方法,它们用于对4x4矩阵进行各种操作,如设置值、重置、相乘、克隆、转置、分解以及从数组中设置值等。