Class Vector4_<T>Internal

Generic 4D vector class that serves as the base implementation for both 32-bit and 64-bit vector types. This class provides immutable vector operations with support for different floating-point precisions.

Type Parameters

  • T extends FloatTypedArrayConstructor

    The typed array constructor type (Float32ArrayConstructor or Float64ArrayConstructor) This class is not intended for direct instantiation by users

Hierarchy (view full)

Implements

Constructors

Properties

_v: TypedArray = ...

Internal typed array storage for vector components

Accessors

  • get bytesPerComponent(): number
  • Gets the number of bytes per component in the underlying typed array.

    Returns number

    The number of bytes per element (4 for Float32Array, 8 for Float64Array)

  • get glslStrAsFloat(): string
  • Converts the vector to a GLSL vec4 string representation with float precision.

    Returns string

    A GLSL-compatible vec4 string (e.g., "vec4(1.0, 2.0, 3.0, 4.0)")

  • get glslStrAsInt(): string
  • Converts the vector to a GLSL ivec4 string representation with integer values.

    Returns string

    A GLSL-compatible ivec4 string (e.g., "ivec4(1, 2, 3, 4)")

  • get wgslStrAsFloat(): string
  • Converts the vector to a WGSL vec4f string representation with float precision.

    Returns string

    A WGSL-compatible vec4f string (e.g., "vec4f(1.0, 2.0, 3.0, 4.0)")

  • get wgslStrAsInt(): string
  • Converts the vector to a WGSL vec4i string representation with integer values.

    Returns string

    A WGSL-compatible vec4i string (e.g., "vec4i(1, 2, 3, 4)")

  • get compositionType(): CompositionTypeClass<"VEC4">
  • Gets the composition type identifier for this vector type.

    Returns CompositionTypeClass<"VEC4">

    The CompositionType.Vec4 identifier

Methods

  • Calculates the dot product between this vector and another vector. The dot product is the sum of the products of corresponding components.

    Parameters

    • vec: IVector4

      The vector to calculate dot product with

    Returns number

    The dot product of the two vectors

  • Checks if this vector is approximately equal to another vector within a specified tolerance.

    Parameters

    • vec: IVector4

      The vector to compare with

    • delta: number = Number.EPSILON

      The tolerance value for comparison (default: Number.EPSILON)

    Returns boolean

    True if the vectors are approximately equal, false otherwise

  • Checks if the internal storage shares the same ArrayBuffer as the provided one. Useful for determining if vectors share underlying memory.

    Parameters

    • arrayBuffer: ArrayBuffer

      The ArrayBuffer to compare against

    Returns boolean

    True if the same ArrayBuffer is used, false otherwise

  • Gets the component value at the specified index. Alias for the at() method for convenience.

    Parameters

    • i: number

      The index of the component to retrieve

    Returns number

    The component value at the given index

  • Adds two vectors component-wise and stores the result in the output vector. This method modifies the output vector in-place for better performance.

    Parameters

    • l_vec: IVector4

      The left operand vector

    • r_vec: IVector4

      The right operand vector

    • out: IMutableVector4

      The output vector to store the result (will be modified)

    Returns IMutableVector4

    The modified output vector containing the sum

  • Divides a vector by a scalar value and stores the result in the output vector. If the divisor is zero, the result components will be set to Infinity and an error will be logged. This method modifies the output vector in-place for better performance.

    Parameters

    • vec: IVector4

      The vector to divide

    • value: number

      The scalar value to divide by

    • out: IMutableVector4

      The output vector to store the result (will be modified)

    Returns IMutableVector4

    The modified output vector with each component divided by the scalar

  • Divides the left vector by the right vector component-wise and stores the result in the output vector. If any component of the right vector is zero, the corresponding result component will be set to Infinity. This method modifies the output vector in-place for better performance.

    Parameters

    • l_vec: IVector4

      The left operand vector (dividend)

    • r_vec: IVector4

      The right operand vector (divisor)

    • out: IMutableVector4

      The output vector to store the result (will be modified)

    Returns IMutableVector4

    The modified output vector with component-wise division result

  • Calculates the dot product of two vectors. The dot product is the sum of the products of corresponding components.

    Parameters

    Returns number

    The dot product of the two vectors

  • Calculates the distance between two vectors.

    Parameters

    Returns number

    The distance between the two vectors

  • Calculates the squared length (magnitude) of a vector. This is more efficient than length() when only comparing magnitudes.

    Parameters

    • vec: IVector4

      The vector to calculate squared length for

    Returns number

    The squared length of the vector

  • Multiplies a vector by a scalar value and stores the result in the output vector. This method modifies the output vector in-place for better performance.

    Parameters

    • vec: IVector4

      The vector to multiply

    • value: number

      The scalar value to multiply by

    • out: IMutableVector4

      The output vector to store the result (will be modified)

    Returns IMutableVector4

    The modified output vector with each component multiplied by the scalar

  • Multiplies two vectors component-wise and stores the result in the output vector. This method modifies the output vector in-place for better performance.

    Parameters

    • l_vec: IVector4

      The left operand vector

    • r_vec: IVector4

      The right operand vector

    • out: IMutableVector4

      The output vector to store the result (will be modified)

    Returns IMutableVector4

    The modified output vector with component-wise multiplication result

  • Subtracts the right vector from the left vector component-wise and stores the result in the output vector. This method modifies the output vector in-place for better performance.

    Parameters

    • l_vec: IVector4

      The left operand vector (minuend)

    • r_vec: IVector4

      The right operand vector (subtrahend)

    • out: IMutableVector4

      The output vector to store the result (will be modified)

    Returns IMutableVector4

    The modified output vector containing the difference