{"version":3,"file":"Euler.mjs","sources":["../../src/proj3d/Euler.ts"],"sourcesContent":["import { IEuler } from './ObservableEuler';\r\n\r\nexport class Euler\r\n{\r\n    constructor(x?: number, y?: number, z?: number)\r\n    {\r\n        /**\r\n         * @member {number}\r\n         * @default 0\r\n         */\r\n        this._x = x || 0;\r\n\r\n        /**\r\n         * @member {number}\r\n         * @default 0\r\n         */\r\n        this._y = y || 0;\r\n\r\n        /**\r\n         * @member {number}\r\n         * @default 0\r\n         */\r\n        this._z = z || 0;\r\n\r\n        this.quaternion = new Float64Array(4);\r\n        this.quaternion[3] = 1;\r\n\r\n        this.update();\r\n    }\r\n\r\n    _quatUpdateId = -1;\r\n    _quatDirtyId = 0;\r\n\r\n    quaternion: Float64Array;\r\n\r\n    _x: number;\r\n    _y: number;\r\n    _z: number;\r\n    _sign = 1;\r\n\r\n    get x(): number\r\n    {\r\n        return this._x;\r\n    }\r\n\r\n    set x(value: number)\r\n    {\r\n        if (this._x !== value)\r\n        {\r\n            this._x = value;\r\n            this._quatDirtyId++;\r\n        }\r\n    }\r\n\r\n    get y(): number\r\n    {\r\n        return this._y;\r\n    }\r\n\r\n    set y(value: number)\r\n    {\r\n        if (this._y !== value)\r\n        {\r\n            this._y = value;\r\n            this._quatDirtyId++;\r\n        }\r\n    }\r\n\r\n    get z(): number\r\n    {\r\n        return this._z;\r\n    }\r\n\r\n    set z(value: number)\r\n    {\r\n        if (this._z !== value)\r\n        {\r\n            this._z = value;\r\n            this._quatDirtyId++;\r\n        }\r\n    }\r\n\r\n    get pitch(): number\r\n    {\r\n        return this._x;\r\n    }\r\n\r\n    set pitch(value: number)\r\n    {\r\n        if (this._x !== value)\r\n        {\r\n            this._x = value;\r\n            this._quatDirtyId++;\r\n        }\r\n    }\r\n\r\n    get yaw(): number\r\n    {\r\n        return this._y;\r\n    }\r\n\r\n    set yaw(value: number)\r\n    {\r\n        if (this._y !== value)\r\n        {\r\n            this._y = value;\r\n            this._quatDirtyId++;\r\n        }\r\n    }\r\n\r\n    get roll(): number\r\n    {\r\n        return this._z;\r\n    }\r\n\r\n    set roll(value: number)\r\n    {\r\n        if (this._z !== value)\r\n        {\r\n            this._z = value;\r\n            this._quatDirtyId++;\r\n        }\r\n    }\r\n\r\n    set(x?: number, y?: number, z?: number): void\r\n    {\r\n        const _x = x || 0;\r\n        const _y = y || 0;\r\n        const _z = z || 0;\r\n\r\n        if (this._x !== _x || this._y !== _y || this._z !== _z)\r\n        {\r\n            this._x = _x;\r\n            this._y = _y;\r\n            this._z = _z;\r\n            this._quatDirtyId++;\r\n        }\r\n    }\r\n\r\n    copyFrom(euler: IEuler): this\r\n    {\r\n        const _x = euler.x;\r\n        const _y = euler.y;\r\n        const _z = euler.z;\r\n\r\n        if (this._x !== _x || this._y !== _y || this._z !== _z)\r\n        {\r\n            this._x = _x;\r\n            this._y = _y;\r\n            this._z = _z;\r\n            this._quatDirtyId++;\r\n        }\r\n\r\n        return this;\r\n    }\r\n\r\n    copyTo(p: IEuler): IEuler\r\n    {\r\n        p.set(this._x, this._y, this._z);\r\n\r\n        return p;\r\n    }\r\n\r\n    equals(euler: IEuler): boolean\r\n    {\r\n        return this._x === euler.x\r\n            && this._y === euler.y\r\n            && this._z === euler.z;\r\n    }\r\n\r\n    clone(): Euler\r\n    {\r\n        return new Euler(this._x, this._y, this._z);\r\n    }\r\n\r\n    update(): boolean\r\n    {\r\n        if (this._quatUpdateId === this._quatDirtyId)\r\n        {\r\n            return false;\r\n        }\r\n        this._quatUpdateId = this._quatDirtyId;\r\n\r\n        const c1 = Math.cos(this._x / 2);\r\n        const c2 = Math.cos(this._y / 2);\r\n        const c3 = Math.cos(this._z / 2);\r\n\r\n        const s = this._sign;\r\n        const s1 = s * Math.sin(this._x / 2);\r\n        const s2 = s * Math.sin(this._y / 2);\r\n        const s3 = s * Math.sin(this._z / 2);\r\n\r\n        const q = this.quaternion;\r\n\r\n        q[0] = (s1 * c2 * c3) + (c1 * s2 * s3);\r\n        q[1] = (c1 * s2 * c3) - (s1 * c2 * s3);\r\n        q[2] = (c1 * c2 * s3) + (s1 * s2 * c3);\r\n        q[3] = (c1 * c2 * c3) - (s1 * s2 * s3);\r\n\r\n        return true;\r\n    }\r\n}\r\n"],"names":[],"mappings":"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"}