Engine API Reference - v2.23.0-beta.17
    Preparing search index...

    Class Vec2

    A 2-dimensional vector. Vec2 is commonly used to represent 2D positions, directions, texture coordinates (UVs) or any pair of related numeric values.

    Operations follow one convention throughout the math classes: a method that modifies the vector it is called on returns it, so calls can be chained and nothing is allocated, while queries such as distance and dot return a number. Two-operand forms such as add2 and sub2 write the result of lhs op rhs into this, and it is safe for this to also be one of the operands. Use clone for an independent copy and copy to overwrite one vector with another.

    The static constants such as ZERO and UP are frozen shared instances: read them freely, but writing to one throws. Copy a constant before modifying it.

    // Scroll a texture offset each frame without allocating
    const offset = new Vec2(0, 0);
    const speed = new Vec2(0.1, 0);
    offset.addScaled(speed, dt);
    // Chain mutating operations; each returns the vector it was called on
    const toTarget = new Vec2().sub2(target, position).normalize();
    const distance = target.distance(position);
    Index
    • Creates a new Vec2 instance.

      Parameters

      • Optionalx: number

        The x value. Defaults to 0.

      • Optionaly: number

        The y value. Defaults to 0.

      Returns Vec2

      const v1 = new Vec2(); // defaults to 0, 0
      const v2 = new Vec2(1, 2);
    • Creates a new Vec2 instance.

      Parameters

      • arr: number[]

        The array to set the vector values from.

      Returns Vec2

      const v = new Vec2([1, 2]);
      
    x: number

    The first component of the vector.

    y: number

    The second component of the vector.

    DOWN: Vec2 = ...

    A constant vector set to [0, -1].

    HALF: Vec2 = ...

    A constant vector set to [0.5, 0.5].

    LEFT: Vec2 = ...

    A constant vector set to [-1, 0].

    ONE: Vec2 = ...

    A constant vector set to [1, 1].

    RIGHT: Vec2 = ...

    A constant vector set to [1, 0].

    UP: Vec2 = ...

    A constant vector set to [0, 1].

    ZERO: Vec2 = ...

    A constant vector set to [0, 0].

    • Adds a 2-dimensional vector to another in place.

      Parameters

      • rhs: Vec2

        The vector to add to the specified vector.

      Returns Vec2

      Self for chaining.

      const a = new Vec2(10, 10);
      const b = new Vec2(20, 20);

      a.add(b);

      // Outputs [30, 30]
      console.log("The result of the addition is: " + a.toString());
    • Adds two 2-dimensional vectors together and returns the result.

      Parameters

      • lhs: Vec2

        The first vector operand for the addition.

      • rhs: Vec2

        The second vector operand for the addition.

      Returns Vec2

      Self for chaining.

      const a = new Vec2(10, 10);
      const b = new Vec2(20, 20);
      const r = new Vec2();

      r.add2(a, b);
      // Outputs [30, 30]

      console.log("The result of the addition is: " + r.toString());
    • Adds a number to each element of a vector.

      Parameters

      • scalar: number

        The number to add.

      Returns Vec2

      Self for chaining.

      const vec = new Vec2(3, 4);

      vec.addScalar(2);

      // Outputs [5, 6]
      console.log("The result of the addition is: " + vec.toString());
    • Adds a 2-dimensional vector scaled by scalar value. Does not modify the vector being added.

      Parameters

      • rhs: Vec2

        The vector to add to the specified vector.

      • scalar: number

        The number to multiply the added vector with.

      Returns Vec2

      Self for chaining.

      const vec = new Vec2(1, 2);

      vec.addScaled(Vec2.UP, 2);

      // Outputs [1, 4]
      console.log("The result of the addition is: " + vec.toString());
    • Returns the angle in degrees of the specified 2-dimensional vector.

      Returns number

      The angle in degrees of the specified 2-dimensional vector.

      const v = new Vec2(6, 0);
      const angle = v.angle();
      // Outputs 90..
      console.log("The angle of the vector is: " + angle);
    • Returns the shortest Euler angle between two 2-dimensional vectors.

      Parameters

      • rhs: Vec2

        The 2-dimensional vector to calculate angle to.

      Returns number

      The shortest angle in degrees between two 2-dimensional vectors.

      const a = new Vec2(0, 10); // up
      const b = new Vec2(1, -1); // down-right
      const angle = a.angleTo(b);
      // Outputs 135..
      console.log("The angle between vectors a and b: " + angle);
    • Each element is rounded up to the next largest integer.

      Parameters

      • Optionalsrc: Vec2 = ...

        The vector to ceil. If not set, the operation is done in place.

      Returns Vec2

      Self for chaining.

      const v = new Vec2(1.2, 3.1);
      v.ceil();
      // v is now [2, 4]
    • Returns an identical copy of the specified 2-dimensional vector.

      Returns Vec2

      A 2-dimensional vector containing the result of the cloning.

      const v = new Vec2(10, 20);
      const vclone = v.clone();
      console.log("The result of the cloning is: " + vclone.toString());
    • Copies the contents of a source 2-dimensional vector to a destination 2-dimensional vector.

      Parameters

      • rhs: Vec2

        A vector to copy to the specified vector.

      Returns Vec2

      Self for chaining.

      const src = new Vec2(10, 20);
      const dst = new Vec2();

      dst.copy(src);

      console.log("The two vectors are " + (dst.equals(src) ? "equal" : "different"));
    • Returns the result of a cross product operation performed on the two specified 2-dimensional vectors.

      Parameters

      • rhs: Vec2

        The second 2-dimensional vector operand of the cross product.

      Returns number

      The cross product of the two vectors.

      const right = new Vec2(1, 0);
      const up = new Vec2(0, 1);
      const crossProduct = right.cross(up);

      // Prints 1
      console.log("The result of the cross product is: " + crossProduct);
    • Returns the distance between the two specified 2-dimensional vectors.

      Parameters

      • rhs: Vec2

        The second 2-dimensional vector to test.

      Returns number

      The distance between the two vectors.

      const v1 = new Vec2(5, 10);
      const v2 = new Vec2(10, 20);
      const d = v1.distance(v2);
      console.log("The distance between v1 and v2 is: " + d);
    • Returns the squared distance between the two specified 2-dimensional vectors.

      Parameters

      • rhs: Vec2

        The second 2-dimensional vector to test.

      Returns number

      The squared distance between the two vectors.

      const v1 = new Vec2(5, 10);
      const v2 = new Vec2(10, 20);
      const d = v1.distanceSq(v2);
      console.log("The squared distance between v1 and v2 is: " + d);
    • Divides a 2-dimensional vector by another in place.

      Parameters

      • rhs: Vec2

        The vector to divide the specified vector by.

      Returns Vec2

      Self for chaining.

      const a = new Vec2(4, 9);
      const b = new Vec2(2, 3);

      a.div(b);

      // Outputs [2, 3]
      console.log("The result of the division is: " + a.toString());
    • Divides one 2-dimensional vector by another and writes the result to the specified vector.

      Parameters

      • lhs: Vec2

        The dividend vector (the vector being divided).

      • rhs: Vec2

        The divisor vector (the vector dividing the dividend).

      Returns Vec2

      Self for chaining.

      const a = new Vec2(4, 9);
      const b = new Vec2(2, 3);
      const r = new Vec2();

      r.div2(a, b);

      // Outputs [2, 3]
      console.log("The result of the division is: " + r.toString());
    • Divides each element of a vector by a number.

      Parameters

      • scalar: number

        The number to divide by.

      Returns Vec2

      Self for chaining.

      const vec = new Vec2(3, 6);

      vec.divScalar(3);

      // Outputs [1, 2]
      console.log("The result of the division is: " + vec.toString());
    • Returns the result of a dot product operation performed on the two specified 2-dimensional vectors.

      Parameters

      • rhs: Vec2

        The second 2-dimensional vector operand of the dot product.

      Returns number

      The result of the dot product operation.

      const v1 = new Vec2(5, 10);
      const v2 = new Vec2(10, 20);
      const v1dotv2 = v1.dot(v2);
      console.log("The result of the dot product is: " + v1dotv2);
    • Reports whether two vectors are equal.

      Parameters

      • rhs: Vec2

        The vector to compare to the specified vector.

      Returns boolean

      True if the vectors are equal and false otherwise.

      const a = new Vec2(1, 2);
      const b = new Vec2(4, 5);
      console.log("The two vectors are " + (a.equals(b) ? "equal" : "different"));
    • Reports whether two vectors are equal using an absolute error tolerance.

      Parameters

      • rhs: Vec2

        The vector to be compared against.

      • Optionalepsilon: number = 1e-6

        The maximum difference between each component of the two vectors. Defaults to 1e-6.

      Returns boolean

      True if the vectors are equal and false otherwise.

      const a = new Vec2();
      const b = new Vec2();
      console.log("The two vectors are approximately " + (a.equalsApprox(b, 1e-9) ? "equal" : "different"));
    • Each element is set to the largest integer less than or equal to its value.

      Parameters

      • Optionalsrc: Vec2 = ...

        The vector to floor. If not set, the operation is done in place.

      Returns Vec2

      Self for chaining.

      const v = new Vec2(1.2, 3.9);
      v.floor();
      // v is now [1, 3]
    • Set the values of the vector from an array.

      Parameters

      • arr: number[] | ArrayBufferView<ArrayBufferLike>

        The array to set the vector values from.

      • Optionaloffset: number = 0

        The zero-based index at which to start copying elements from the array. Default is 0.

      Returns Vec2

      Self for chaining.

      const v = new Vec2();
      v.fromArray([20, 10]);
      // v is set to [20, 10]
    • Returns the magnitude of the specified 2-dimensional vector.

      Returns number

      The magnitude of the specified 2-dimensional vector.

      const vec = new Vec2(3, 4);
      const len = vec.length();
      // Outputs 5
      console.log("The length of the vector is: " + len);
    • Returns the magnitude squared of the specified 2-dimensional vector.

      Returns number

      The magnitude squared of the specified 2-dimensional vector.

      const vec = new Vec2(3, 4);
      const len = vec.lengthSq();
      // Outputs 25
      console.log("The length squared of the vector is: " + len);
    • Returns the result of a linear interpolation between two specified 2-dimensional vectors.

      Parameters

      • lhs: Vec2

        The 2-dimensional vector to interpolate from.

      • rhs: Vec2

        The 2-dimensional vector to interpolate to.

      • alpha: number

        The value controlling the point of interpolation. Between 0 and 1, the linear interpolant will occur on a straight line between lhs and rhs. Outside of this range, the linear interpolant will occur on a ray extrapolated from this line.

      Returns Vec2

      Self for chaining.

      const a = new Vec2(0, 0);
      const b = new Vec2(10, 10);
      const r = new Vec2();

      r.lerp(a, b, 0); // r is equal to a
      r.lerp(a, b, 0.5); // r is 5, 5
      r.lerp(a, b, 1); // r is equal to b
    • Each element is assigned a value from rhs parameter if it is larger.

      Parameters

      • rhs: Vec2

        The 2-dimensional vector used as the source of elements to compare to.

      Returns Vec2

      Self for chaining.

      const a = new Vec2(5, 1);
      const b = new Vec2(2, 8);
      a.max(b);
      // a is now [5, 8]
    • Each element is assigned a value from rhs parameter if it is smaller.

      Parameters

      • rhs: Vec2

        The 2-dimensional vector used as the source of elements to compare to.

      Returns Vec2

      Self for chaining.

      const a = new Vec2(5, 1);
      const b = new Vec2(2, 8);
      a.min(b);
      // a is now [2, 1]
    • Multiplies a 2-dimensional vector to another in place.

      Parameters

      • rhs: Vec2

        The 2-dimensional vector used as the second multiplicand of the operation.

      Returns Vec2

      Self for chaining.

      const a = new Vec2(2, 3);
      const b = new Vec2(4, 5);

      a.mul(b);

      // Outputs 8, 15
      console.log("The result of the multiplication is: " + a.toString());
    • Returns the result of multiplying the specified 2-dimensional vectors together.

      Parameters

      • lhs: Vec2

        The 2-dimensional vector used as the first multiplicand of the operation.

      • rhs: Vec2

        The 2-dimensional vector used as the second multiplicand of the operation.

      Returns Vec2

      Self for chaining.

      const a = new Vec2(2, 3);
      const b = new Vec2(4, 5);
      const r = new Vec2();

      r.mul2(a, b);

      // Outputs 8, 15
      console.log("The result of the multiplication is: " + r.toString());
    • Multiplies each element of a vector by a number.

      Parameters

      • scalar: number

        The number to multiply by.

      Returns Vec2

      Self for chaining.

      const vec = new Vec2(3, 6);

      vec.mulScalar(3);

      // Outputs [9, 18]
      console.log("The result of the multiplication is: " + vec.toString());
    • Returns this 2-dimensional vector converted to a unit vector in place. If the vector has a length of zero, the vector's elements will be set to zero.

      Parameters

      • Optionalsrc: Vec2 = ...

        The vector to normalize. If not set, the operation is done in place.

      Returns Vec2

      Self for chaining.

      const v = new Vec2(25, 0);

      v.normalize();

      // Outputs 1, 0
      console.log("The result of the vector normalization is: " + v.toString());
    • Rotate a vector by an angle in degrees.

      Parameters

      • degrees: number

        The number to degrees to rotate the vector by.

      Returns Vec2

      Self for chaining.

      const v = new Vec2(0, 10);

      v.rotate(45); // rotates by 45 degrees

      // Outputs [7.071068.., 7.071068..]
      console.log("Vector after rotation is: " + v.toString());
    • Each element is rounded up or down to the nearest integer.

      Parameters

      • Optionalsrc: Vec2 = ...

        The vector to round. If not set, the operation is done in place.

      Returns Vec2

      Self for chaining.

      const v = new Vec2(1.4, 3.6);
      v.round();
      // v is now [1, 4]
    • Sets the specified 2-dimensional vector to the supplied numerical values.

      Parameters

      • x: number

        The value to set on the first component of the vector.

      • y: number

        The value to set on the second component of the vector.

      Returns Vec2

      Self for chaining.

      const v = new Vec2();
      v.set(5, 10);

      // Outputs 5, 10
      console.log("The result of the vector set is: " + v.toString());
    • Subtracts a 2-dimensional vector from another in place.

      Parameters

      • rhs: Vec2

        The vector to subtract from the specified vector.

      Returns Vec2

      Self for chaining.

      const a = new Vec2(10, 10);
      const b = new Vec2(20, 20);

      a.sub(b);

      // Outputs [-10, -10]
      console.log("The result of the subtraction is: " + a.toString());
    • Subtracts two 2-dimensional vectors from one another and returns the result.

      Parameters

      • lhs: Vec2

        The first vector operand for the subtraction.

      • rhs: Vec2

        The second vector operand for the subtraction.

      Returns Vec2

      Self for chaining.

      const a = new Vec2(10, 10);
      const b = new Vec2(20, 20);
      const r = new Vec2();

      r.sub2(a, b);

      // Outputs [-10, -10]
      console.log("The result of the subtraction is: " + r.toString());
    • Subtracts a number from each element of a vector.

      Parameters

      • scalar: number

        The number to subtract.

      Returns Vec2

      Self for chaining.

      const vec = new Vec2(3, 4);

      vec.subScalar(2);

      // Outputs [1, 2]
      console.log("The result of the subtraction is: " + vec.toString());
    • Parameters

      • Optionalarr: number[]

        The array to populate with the vector's number components. If not specified, a new array is created.

      • Optionaloffset: number

        The zero-based index at which to start copying elements to the array. Default is 0.

      Returns number[]

      The vector as an array.

    • Parameters

      • arr: ArrayBufferView

        The array to populate with the vector's number components. If not specified, a new array is created.

      • Optionaloffset: number

        The zero-based index at which to start copying elements to the array. Default is 0.

      Returns ArrayBufferView

      The vector as an array.

    • Converts the vector to string form.

      Returns string

      The vector in string form.

      const v = new Vec2(20, 10);
      // Outputs [20, 10]
      console.log(v.toString());