function initializeContext(canvasId) { const canvas = document.getElementById(canvasId); const ctx = canvas.getContext("webgl2", { antialias: false }); return ctx; } class Vec2 { x; y; constructor(x, y) { this.x = x; this.y = y; } add(other) { this.x += other.x; this.y += other.y; } addScalar(scalar) { this.x += scalar; this.y += scalar; } addNew(other) { return new Vec2(this.x + other.x, this.y + other.y); } addScalarNew(scalar) { return new Vec2(this.x + scalar, this.y + scalar); } sub(other) { this.x -= other.x; this.y -= other.y; } mult(scalar) { this.x *= scalar; this.y *= scalar; } multNew(scalar) { return new Vec2(this.x * scalar, this.y * scalar); } splatToArray() { return [this.x, this.y]; } static angle(angle) { const eps = 1e-6; let x = Math.cos(angle); let y = Math.sin(angle); if ((x > 0 && x < eps) || (x < 0 && x > -eps)) x = 0; if ((y > 0 && y < eps) || (y < 0 && y > -eps)) y = 0; return new Vec2(x, y); } } class Vec3 { x; y; z; constructor(x, y, z) { this.x = x; this.y = y; this.z = z; } add(other) { this.x += other.x; this.y += other.y; this.z += other.z; } sub(other) { this.x -= other.x; this.y -= other.y; this.z -= other.z; } } export { initializeContext, Vec2, Vec3 };