THREE.Vector2 方法介绍

threejs yekong

在 Three.js 中,THREE.Vector2 是用来表示二维向量或点的类,它用于处理二维空间中的几何计算和操作。THREE.Vector2 提供了许多方便的方法来进行向量运算、坐标变换以及其他几何操作。

以下是 THREE.Vector2 中常用的一些方法的介绍:

  1. 构造函数:

    constructor(x?: number, y?: number)
    

    构造函数接受两个可选参数 xy,它们分别代表向量或点在二维空间中的 x 和 y 分量。默认创建一个所有分量都为 0 的二维向量。

  2. clone():

    clone(): THREE.Vector2
    

    返回一个新的 THREE.Vector2 对象,是当前向量的克隆副本。

  3. set():

    set(x: number, y: number): THREE.Vector2
    

    设置向量的 x 和 y 分量,并返回当前向量。

  4. add():

    add(v: THREE.Vector2): THREE.Vector2
    

    将当前向量与参数 v 相加,并返回一个新的 THREE.Vector2 对象,表示两个向量之和。

  5. sub():

    sub(v: THREE.Vector2): THREE.Vector2
    

    将当前向量与参数 v 相减,并返回一个新的 THREE.Vector2 对象,表示两个向量之差。

  6. multiplyScalar():

    multiplyScalar(scalar: number): THREE.Vector2
    

    将当前向量的每个分量乘以参数 scalar,并返回一个新的 THREE.Vector2 对象,表示缩放后的向量。

  7. dot():

    dot(v: THREE.Vector2): number
    

    计算当前向量与参数 v 的点积,并返回一个数字结果。

  8. length() / lengthSq():

    length(): number
    lengthSq(): number
    

    length() 方法返回当前向量的长度(模),lengthSq() 方法返回当前向量长度的平方。这两个方法都返回一个数字结果。

  9. normalize():

    normalize(): THREE.Vector2
    

    将当前向量归一化为单位向量,并返回当前向量。

  10. applyMatrix3() / applyMatrix4():

    applyMatrix3(matrix: THREE.Matrix3): THREE.Vector2
    applyMatrix4(matrix: THREE.Matrix4): THREE.Vector2
    

    分别将当前向量乘以二维矩阵或四维矩阵,并返回一个新的 THREE.Vector2 对象,表示变换后的向量。

  11. rotateAround():

    rotateAround(center: THREE.Vector2, angle: number): THREE.Vector2
    

    center 点旋转当前向量,angle 参数是旋转的角度(弧度)。返回一个新的 THREE.Vector2 对象,表示旋转后的向量。

这些方法只是 THREE.Vector2 类中一部分常用的方法,它还有其他一些方法可以在 Three.js 中进行二维空间的几何计算和操作。使用这些方法,你可以方便地进行二维向量的运算和坐标变换。

使用实例

以下是使用 THREE.Vector2 的几个实例,展示了如何创建向量、进行向量运算和坐标变换:

  1. 创建向量:
const vec1 = new THREE.Vector2(); // 创建一个二维向量,默认 x、y 分量都为 0
const vec2 = new THREE.Vector2(1, 2); // 创建一个二维向量,x 分量为 1,y 分量为 2
const vec3 = new THREE.Vector2(1.5, -3); // 创建一个二维向量,参数可以是小数和负数
  1. 向量运算:
const vec1 = new THREE.Vector2(1, 2);
const vec2 = new THREE.Vector2(2, 4);

const resultAdd = vec1.clone().add(vec2); // 向量加法
console.log(resultAdd); // Vector2 { x: 3, y: 6 }

const resultSubtract = vec1.clone().sub(vec2); // 向量减法
console.log(resultSubtract); // Vector2 { x: -1, y: -2 }

const resultMultiplyScalar = vec1.clone().multiplyScalar(2); // 向量标量乘法
console.log(resultMultiplyScalar); // Vector2 { x: 2, y: 4 }

const resultDot = vec1.clone().dot(vec2); // 向量点积
console.log(resultDot); // 10
  1. 坐标变换:
const position = new THREE.Vector2(1, 2);
const angle = Math.PI / 4; // 旋转角度为 45 度

const rotatedPosition = position.clone().rotateAround(new THREE.Vector2(0, 0), angle);
console.log(rotatedPosition); // Vector2 { x: 0.7071067811865476, y: 2.1213203435596424 }

在这个例子中,我们首先创建了一个原始的二维向量 position,然后通过 rotateAround 方法绕原点 (0, 0) 旋转向量 positionrotateAround 方法接受两个参数,第一个参数是旋转中心点,这里我们使用原点作为旋转中心;第二个参数是旋转角度,我们设置为 45 度(弧度表示)。最后,我们将旋转后的向量存储在 rotatedPosition 中。

这些是使用 THREE.Vector2 类的一些基本实例,你可以根据你的项目需求进一步探索 Three.js 中的向量运算和坐标变换功能。

与THREE.Vector3的不同点

THREE.Vector3与THREE.Vector2的相同和不同

项目应用

vr全景看房原理以及实现

喜欢