@threeify/math
Version:
Computer graphics oriented, High performance, tree-shakeable, TypeScript 3D vector math library.
74 lines (65 loc) • 1.37 kB
text/typescript
export enum EulerOrder3 {
XYZ,
XZY,
YXZ,
YZX,
ZYX,
ZXY,
Default = XYZ
}
export type Euler3JSON = number[];
export class Euler3 {
static readonly NUM_COMPONENTS = 4;
constructor(
public x = 0,
public y = 0,
public z = 0,
public order: EulerOrder3 = EulerOrder3.XYZ
) {}
clone(result = new Euler3()): Euler3 {
return result.set(this.x, this.y, this.z, this.order);
}
copy(v: Euler3): this {
return this.set(v.x, v.y, v.z, v.order);
}
set(x: number, y: number, z: number, order: EulerOrder3): this {
this.x = x;
this.y = y;
this.z = z;
this.order = order;
return this;
}
setComponent(index: number, value: number): this {
switch (index) {
case 0:
this.x = value;
break;
case 1:
this.y = value;
break;
case 2:
this.z = value;
break;
case 3:
this.order = value as EulerOrder3;
break;
default:
throw new Error(`index is out of range: ${index}`);
}
return this;
}
getComponent(index: number): number {
switch (index) {
case 0:
return this.x;
case 1:
return this.y;
case 2:
return this.z;
case 3:
return this.order as number;
default:
throw new Error(`index is out of range: ${index}`);
}
}
}