Overview
Developer Guide
@math.gl/culling
@math.gl/geospatial
@math.gl/sun
@math.gl/web-mercator
API Reference
@math.gl/culling
@math.gl/geospatial
@math.gl/polygon
@math.gl/sun
@math.gl/web-mercator
Concepts

# 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 === 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`.

// MODIFIERS

### 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)

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) : 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) : Vector4

Transforms the vector by the provided 3x3 matrix.

### transformByMatrix2(matrix2 : Number) : Vector4

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

### transformByQuaternion(quaternion : Number) : Vector4

Transform the vector by the provided `quaternion`.