Skip to main content

Vector3

class Vector3 extends MathArray extends Array

Usage

import {Vector3} from '@math.gl/core';
const vector = new Vector3(1, 1, 1);

Accessors

v.x = 2;
assert(v[0] === v.x);

Simple rotations

const v = new Vector3([1, 0, 0]);
v.rotateX({radians: Math.PI / 4}); // Rotate around the origin
v.rotateX({radians: Math.PI / 4, origin: [1, 1, 0]}); // Rotate around the specified point

Scaling with constants

const u = v.scale(-1); // Reverse direction vector

Scaling with vectors is very flexible, you can e.g. set a component to zero, or flip a component's sign.

const u = v.scale([1, 1, 0]); // Set z component to zero
const w = v.scale([1, -1, 1]); // Flip y component

Inheritance

Vector3 extends Vector extends MathArray extends Array

Members

x, y, z

Gets or sets element 0, 1 or 2 respectively

Methods

Many of the most commonly used Vector3 methods are inherited from MathArray:

  • Vector3.clone()
  • Vector3.copy(array)
  • Vector3.set(...args)
  • Vector3.fromArray(array, offset = 0)
  • Vector3.toString()
  • Vector3.toArray(array = [], offset = 0)
  • Vector3.equals(array)
  • Vector3.exactEquals(array)
  • Vector3.validate(array = this)
  • Vector3.check(array = this)
  • Vector3.normalize()

Note that Vector3 is a subclass of the built in JavaScript Array and can thus e.g. be supplied as a parameter to any function expecting an Array.

constructor(x = 0, y = 0, z = 0)

set(x, y, z)

length()

distance(vector)

angle(vector)

dot(vector)

// MODIFIERS

add(...vectors)

subtract(...vectors)

multiply(...vectors)

divide(...vectors)

scale(scale)

Scale component wise with a scalar or another Vector3.

  • scale (Number|Vector3) - scale component wise with a scalar or another Vector3.

negate

negate()

inverse

inverse()

normalize

normalize()

cross

cross(vector)

lerp

lerp(vector, coeff)

rotateX

Rotate a 3D vector around the x-axis

rotateX({radians, origin})

  • radians (Number) - angle to rotate.
  • origin=[0, 0, 0] (Vector3) - the origin of the rotation (optional)

rotateY

Rotate a 3D vector around the y-axis

rotateY({radians, origin})

  • radians (Number) - angle to rotate.
  • origin=[0, 0, 0] (Vector3) - the origin of the rotation (optional)

rotateZ(radians)

Rotate a 3D vector around the z-axis

rotateZ({radians, origin})

  • radians (Number) - angle to rotate.
  • origin=[0, 0, 0] (Vector3) - the origin of the rotation (optional)

transform(matrix4 : Number[16]) : Vector4

Transforms the vector by the provided 4x4 matrix.

Note: Scales the resulting vector to ensure that w, if non-zero, is set to 1.

transformByMatrix3(matrix3 : Number[9]) : Vector4

Transforms the vector by the provided 3x3 matrix.

transformByMatrix2(matrix2 : Number[4]) : Vector4

Transform the vector's x and y values by the provided 2x2 matrix.

transformByQuaternion(quaternion : Number[4]) : Vector4

Transform the vector by the provided quaternion.