core/quaternion.js

/**
 * Creates quaternions.
 *
 * @example
 *
 * const quaternion = new Quaternion(0, 0, 0, 1);
 */
class Quaternion {

    /**
     * Stores the w component.
     * @type {number}
     * @private
     */
    $w;

    /**
     * Stores the x component.
     * @type {number}
     * @private
     */
    $x;

    /**
     * Stores the y component.
     * @type {number}
     * @private
     */
    $y;

    /**
     * Stores the z component.
     * @type {number}
     * @private
     */
    $z;

    /**
     * Gets the w component.
     * @type {number}
     * @public
     */
    get w() {

        return this.$w;
    }

    /**
     * Gets the x component.
     * @type {number}
     * @public
     */
    get x() {

        return this.$x;
    }

    /**
     * Gets the y component.
     * @type {number}
     * @public
     */
    get y() {

        return this.$y;
    }

    /**
     * Gets the z component.
     * @type {number}
     * @public
     */
    get z() {

        return this.$z;
    }

    /**
     * Creates a new quaternion.
     * @param {number} $x The x component of the quaternion to create.
     * @param {number} $y The y component of the quaternion to create.
     * @param {number} $z The z component of the quaternion to create.
     * @param {number} $w The w component of the quaternion to create.
     */
    constructor($x, $y, $z, $w) {

        this.$w = $w;
        this.$x = $x;
        this.$y = $y;
        this.$z = $z;
    }
}

export {

    Quaternion
};

export default Quaternion;