UNPKG

@jsprismarine/math

Version:
83 lines (78 loc) 7.64 kB
'use strict'; Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); const Vector2 = require('./Vector2.cjs.cjs'); class Vector3 extends Vector2.Vector2 { /** * Create a new `Vector3` instance. * @param {number} x - The X coordinate. * @param {number} y - The Y coordinate. * @param {number} z - The Z coordinate. * @example * ```typescript * const vector = new Vector3(10, 20, 30); * ``` */ constructor(x, y, z) { super(x, z); this.y = y; } /** * Returns a Vector3 with 0 on all axis. */ static get ZERO() { return new Vector3(0, 0, 0); } toString() { return `x: §b${this.x.toFixed(2)}§r, y: §b${this.y.toFixed(2)}§r, z: §b${this.z.toFixed(2)}§r`; } /** * Creates a new Vector3 instance from an object with x, y, and z properties. * @param obj - The object containing x, y, and z properties. * @returns {Vector3} A new Vector3 instance. */ static fromObject({ x, y, z }) { return new Vector3(x, y, z); } /** * Set the Y coordinate. * @param {number} y - The Y coordinate. * @example * ```typescript * entity.setY(10); * ``` */ setY(y) { this.y = y; } /** * Get the y coordinate. * @returns {number} The y coordinate's value. */ getY() { return this.y; } /** * Returns a new Vector3 with each component rounded down to the nearest integer. * @returns {Vector3} A new Vector3 with rounded down components. */ floor() { return new Vector3(Math.floor(this.x), Math.floor(this.y), Math.floor(this.z)); } /** * Returns a new Vector3 with each component truncated to the nearest integer. * @returns {Vector3} A new Vector3 with truncated axis. */ trunc() { return new Vector3(Math.trunc(this.x), Math.trunc(this.y), Math.trunc(this.z)); } /** * Compare an instance of `Vector3` with another. * @param {Vector3} vector - The `Vector3` to compare to. * @returns {boolean} `true` if they're equal otherwise `false`. */ equals(vector) { return JSON.stringify(this) === JSON.stringify(vector); } } exports.Vector3 = Vector3; //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVmVjdG9yMy5janMuY2pzIiwic291cmNlcyI6WyIuLi9zcmMvVmVjdG9yMy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBWZWN0b3IyIH0gZnJvbSAnLi9WZWN0b3IyJztcblxuLyoqXG4gKiAzRCBWZWN0b3IuXG4gKi9cbmV4cG9ydCBjbGFzcyBWZWN0b3IzIGV4dGVuZHMgVmVjdG9yMiB7XG4gICAgLyoqXG4gICAgICogUmV0dXJucyBhIFZlY3RvcjMgd2l0aCAwIG9uIGFsbCBheGlzLlxuICAgICAqL1xuICAgIHB1YmxpYyBzdGF0aWMgZ2V0IFpFUk8oKTogVmVjdG9yMyB7XG4gICAgICAgIHJldHVybiBuZXcgVmVjdG9yMygwLCAwLCAwKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGUgYSBuZXcgYFZlY3RvcjNgIGluc3RhbmNlLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSB4IC0gVGhlIFggY29vcmRpbmF0ZS5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0geSAtIFRoZSBZIGNvb3JkaW5hdGUuXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IHogLSBUaGUgWiBjb29yZGluYXRlLlxuICAgICAqIEBleGFtcGxlXG4gICAgICogYGBgdHlwZXNjcmlwdFxuICAgICAqIGNvbnN0IHZlY3RvciA9IG5ldyBWZWN0b3IzKDEwLCAyMCwgMzApO1xuICAgICAqIGBgYFxuICAgICAqL1xuICAgIHB1YmxpYyBjb25zdHJ1Y3RvcihcbiAgICAgICAgeDogbnVtYmVyLFxuICAgICAgICBwcm90ZWN0ZWQgeTogbnVtYmVyLFxuICAgICAgICB6OiBudW1iZXJcbiAgICApIHtcbiAgICAgICAgc3VwZXIoeCwgeik7XG4gICAgfVxuXG4gICAgcHVibGljIHRvU3RyaW5nKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiBgeDogwqdiJHt0aGlzLngudG9GaXhlZCgyKX3Cp3IsIHk6IMKnYiR7dGhpcy55LnRvRml4ZWQoMil9wqdyLCB6OiDCp2Ike3RoaXMuei50b0ZpeGVkKDIpfcKncmA7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIG5ldyBWZWN0b3IzIGluc3RhbmNlIGZyb20gYW4gb2JqZWN0IHdpdGggeCwgeSwgYW5kIHogcHJvcGVydGllcy5cbiAgICAgKiBAcGFyYW0gb2JqIC0gVGhlIG9iamVjdCBjb250YWluaW5nIHgsIHksIGFuZCB6IHByb3BlcnRpZXMuXG4gICAgICogQHJldHVybnMge1ZlY3RvcjN9IEEgbmV3IFZlY3RvcjMgaW5zdGFuY2UuXG4gICAgICovXG4gICAgcHVibGljIHN0YXRpYyBmcm9tT2JqZWN0KHsgeCwgeSwgeiB9OiB7IHg6IG51bWJlcjsgeTogbnVtYmVyOyB6OiBudW1iZXIgfSk6IFZlY3RvcjMge1xuICAgICAgICByZXR1cm4gbmV3IFZlY3RvcjMoeCwgeSwgeik7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU2V0IHRoZSBZIGNvb3JkaW5hdGUuXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IHkgLSBUaGUgWSBjb29yZGluYXRlLlxuICAgICAqIEBleGFtcGxlXG4gICAgICogYGBgdHlwZXNjcmlwdFxuICAgICAqIGVudGl0eS5zZXRZKDEwKTtcbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBwdWJsaWMgc2V0WSh5OiBudW1iZXIpOiB2b2lkIHtcbiAgICAgICAgdGhpcy55ID0geTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXQgdGhlIHkgY29vcmRpbmF0ZS5cbiAgICAgKiBAcmV0dXJucyB7bnVtYmVyfSBUaGUgeSBjb29yZGluYXRlJ3MgdmFsdWUuXG4gICAgICovXG4gICAgcHVibGljIGdldFkoKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIHRoaXMueTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIGEgbmV3IFZlY3RvcjMgd2l0aCBlYWNoIGNvbXBvbmVudCByb3VuZGVkIGRvd24gdG8gdGhlIG5lYXJlc3QgaW50ZWdlci5cbiAgICAgKiBAcmV0dXJucyB7VmVjdG9yM30gQSBuZXcgVmVjdG9yMyB3aXRoIHJvdW5kZWQgZG93biBjb21wb25lbnRzLlxuICAgICAqL1xuICAgIHB1YmxpYyBmbG9vcigpOiBWZWN0b3IzIHtcbiAgICAgICAgcmV0dXJuIG5ldyBWZWN0b3IzKE1hdGguZmxvb3IodGhpcy54KSwgTWF0aC5mbG9vcih0aGlzLnkpLCBNYXRoLmZsb29yKHRoaXMueikpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgYSBuZXcgVmVjdG9yMyB3aXRoIGVhY2ggY29tcG9uZW50IHRydW5jYXRlZCB0byB0aGUgbmVhcmVzdCBpbnRlZ2VyLlxuICAgICAqIEByZXR1cm5zIHtWZWN0b3IzfSBBIG5ldyBWZWN0b3IzIHdpdGggdHJ1bmNhdGVkIGF4aXMuXG4gICAgICovXG4gICAgcHVibGljIHRydW5jKCk6IFZlY3RvcjMge1xuICAgICAgICByZXR1cm4gbmV3IFZlY3RvcjMoTWF0aC50cnVuYyh0aGlzLngpLCBNYXRoLnRydW5jKHRoaXMueSksIE1hdGgudHJ1bmModGhpcy56KSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ29tcGFyZSBhbiBpbnN0YW5jZSBvZiBgVmVjdG9yM2Agd2l0aCBhbm90aGVyLlxuICAgICAqIEBwYXJhbSB7VmVjdG9yM30gdmVjdG9yIC0gVGhlIGBWZWN0b3IzYCB0byBjb21wYXJlIHRvLlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBgdHJ1ZWAgaWYgdGhleSdyZSBlcXVhbCBvdGhlcndpc2UgYGZhbHNlYC5cbiAgICAgKi9cbiAgICBwdWJsaWMgZXF1YWxzKHZlY3RvcjogdHlwZW9mIHRoaXMpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KHRoaXMpID09PSBKU09OLnN0cmluZ2lmeSh2ZWN0b3IpO1xuICAgIH1cbn1cbiJdLCJuYW1lcyI6WyJWZWN0b3IyIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFLTyxNQUFNLGdCQUFnQkEsZUFBUSxDQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQWtCMUIsV0FBQSxDQUNILENBQ1UsRUFBQSxDQUFBLEVBQ1YsQ0FDRixFQUFBO0FBQ0UsSUFBQSxLQUFBLENBQU0sR0FBRyxDQUFDLENBQUE7QUFIQSxJQUFBLElBQUEsQ0FBQSxDQUFBLEdBQUEsQ0FBQTtBQUFBO0FBSWQ7QUFBQTtBQUFBO0FBQUEsRUFwQkEsV0FBa0IsSUFBZ0IsR0FBQTtBQUM5QixJQUFBLE9BQU8sSUFBSSxPQUFBLENBQVEsQ0FBRyxFQUFBLENBQUEsRUFBRyxDQUFDLENBQUE7QUFBQTtBQUM5QixFQW9CTyxRQUFtQixHQUFBO0FBQ3RCLElBQUEsT0FBTyxRQUFRLElBQUssQ0FBQSxDQUFBLENBQUUsT0FBUSxDQUFBLENBQUMsQ0FBQyxDQUFZLFNBQUEsRUFBQSxJQUFBLENBQUssQ0FBRSxDQUFBLE9BQUEsQ0FBUSxDQUFDLENBQUMsQ0FBQSxTQUFBLEVBQVksS0FBSyxDQUFFLENBQUEsT0FBQSxDQUFRLENBQUMsQ0FBQyxDQUFBLEVBQUEsQ0FBQTtBQUFBO0FBQzlGO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQU9BLE9BQWMsVUFBVyxDQUFBLEVBQUUsQ0FBRyxFQUFBLENBQUEsRUFBRyxHQUFtRCxFQUFBO0FBQ2hGLElBQUEsT0FBTyxJQUFJLE9BQUEsQ0FBUSxDQUFHLEVBQUEsQ0FBQSxFQUFHLENBQUMsQ0FBQTtBQUFBO0FBQzlCO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQVVPLEtBQUssQ0FBaUIsRUFBQTtBQUN6QixJQUFBLElBQUEsQ0FBSyxDQUFJLEdBQUEsQ0FBQTtBQUFBO0FBQ2I7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQU1PLElBQWUsR0FBQTtBQUNsQixJQUFBLE9BQU8sSUFBSyxDQUFBLENBQUE7QUFBQTtBQUNoQjtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBTU8sS0FBaUIsR0FBQTtBQUNwQixJQUFBLE9BQU8sSUFBSSxPQUFRLENBQUEsSUFBQSxDQUFLLEtBQU0sQ0FBQSxJQUFBLENBQUssQ0FBQyxDQUFHLEVBQUEsSUFBQSxDQUFLLEtBQU0sQ0FBQSxJQUFBLENBQUssQ0FBQyxDQUFHLEVBQUEsSUFBQSxDQUFLLEtBQU0sQ0FBQSxJQUFBLENBQUssQ0FBQyxDQUFDLENBQUE7QUFBQTtBQUNqRjtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBTU8sS0FBaUIsR0FBQTtBQUNwQixJQUFBLE9BQU8sSUFBSSxPQUFRLENBQUEsSUFBQSxDQUFLLEtBQU0sQ0FBQSxJQUFBLENBQUssQ0FBQyxDQUFHLEVBQUEsSUFBQSxDQUFLLEtBQU0sQ0FBQSxJQUFBLENBQUssQ0FBQyxDQUFHLEVBQUEsSUFBQSxDQUFLLEtBQU0sQ0FBQSxJQUFBLENBQUssQ0FBQyxDQUFDLENBQUE7QUFBQTtBQUNqRjtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsRUFPTyxPQUFPLE1BQThCLEVBQUE7QUFDeEMsSUFBQSxPQUFPLEtBQUssU0FBVSxDQUFBLElBQUksQ0FBTSxLQUFBLElBQUEsQ0FBSyxVQUFVLE1BQU0sQ0FBQTtBQUFBO0FBRTdEOzs7OyJ9