import{add,dot,lerp,mul,normalize,scale,sub}from"./helpers.js";import{BYTES_PER_FLOAT64,ManagedFloat64Array,memoryManager}from"./memory.js";const TEMP=Array(4);export class Vec2 extends ManagedFloat64Array{constructor(x=0,y=0){super(memoryManager.create(2));this.set([x,y])}get length(){return 2}add(rhs){add(this,rhs);return this}sub(rhs){sub(this,rhs);return this}mul(m){mul(m,this,2,true);return this}mulMat3(m){const left=m.byteOffset/BYTES_PER_FLOAT64|0;const right=this.byteOffset/BYTES_PER_FLOAT64|0;const view=memoryManager.view;for(let i=0;i<2;++i){let f=0;for(let j=0;j<2;++j){f+=view[left+j*3+i]*view[right+j]}f+=view[left+2*3+i];TEMP[i]=f}view[right+0]=TEMP[0];view[right+1]=TEMP[1];return this}dot(rhs){return dot(this,rhs)}lerp(rhs,t){lerp(this,rhs,t);return this}scale(factor){scale(this,factor);return this}normalize(){return normalize(this)}}export class Vec3 extends ManagedFloat64Array{constructor(x=0,y=0,z=0){super(memoryManager.create(3));this.set([x,y,z])}get length(){return 3}add(rhs){add(this,rhs);return this}sub(rhs){sub(this,rhs);return this}mul(m){mul(m,this,3,true);return this}mulMat4(m){const left=m.byteOffset/BYTES_PER_FLOAT64|0;const right=this.byteOffset/BYTES_PER_FLOAT64|0;const view=memoryManager.view;for(let i=0;i<3;++i){let f=0;for(let j=0;j<3;++j){f+=view[left+j*4+i]*view[right+j]}f+=view[left+3*4+i];TEMP[i]=f}view[right+0]=TEMP[0];view[right+1]=TEMP[1];view[right+2]=TEMP[2];return this}cross(rhs){const left=this.byteOffset/BYTES_PER_FLOAT64|0;const right=rhs.byteOffset/BYTES_PER_FLOAT64|0;const view=memoryManager.view;const y=view[left+2]*view[right+0]-view[right+2]*view[left+0];const z=view[left+0]*view[right+1]-view[right+0]*view[left+1];view[left+0]=view[left+1]*view[right+2]-view[right+1]*view[left+2];view[left+1]=y;view[left+2]=z;return this}dot(rhs){return dot(this,rhs)}lerp(rhs,t){lerp(this,rhs,t);return this}scale(factor){scale(this,factor);return this}normalize(){return normalize(this)}}export class Vec4 extends ManagedFloat64Array{constructor(x=0,y=0,z=0,w=0){super(memoryManager.create(4));this.set([x,y,z,w])}get length(){return 4}add(rhs){add(this,rhs);return this}sub(rhs){sub(this,rhs);return this}mul(m){mul(m,this,4,true);return this}dot(rhs){return dot(this,rhs)}lerp(rhs,t){lerp(this,rhs,t);return this}scale(factor){scale(this,factor);return this}normalize(){return normalize(this)}} //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJhZGQiLCJkb3QiLCJsZXJwIiwibXVsIiwibm9ybWFsaXplIiwic2NhbGUiLCJzdWIiLCJCWVRFU19QRVJfRkxPQVQ2NCIsIk1hbmFnZWRGbG9hdDY0QXJyYXkiLCJtZW1vcnlNYW5hZ2VyIiwiVEVNUCIsIkFycmF5IiwiVmVjMiIsImNvbnN0cnVjdG9yIiwieCIsInkiLCJjcmVhdGUiLCJzZXQiLCJsZW5ndGgiLCJyaHMiLCJtIiwibXVsTWF0MyIsImxlZnQiLCJieXRlT2Zmc2V0IiwicmlnaHQiLCJ2aWV3IiwiaSIsImYiLCJqIiwidCIsImZhY3RvciIsIlZlYzMiLCJ6IiwibXVsTWF0NCIsImNyb3NzIiwiVmVjNCIsInciXSwic291cmNlcyI6WyIuLi8uLi9qcy9qcy92ZWMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVmVjIH0gZnJvbSAnLi4vdHlwZXMudHMnO1xuaW1wb3J0IHsgYWRkLCBkb3QsIGxlcnAsIG11bCwgbm9ybWFsaXplLCBzY2FsZSwgc3ViIH0gZnJvbSAnLi9oZWxwZXJzLnRzJztcbmltcG9ydCB7IE1hdDIsIE1hdDMsIE1hdDQgfSBmcm9tICcuL21hdC50cyc7XG5pbXBvcnQgeyBCWVRFU19QRVJfRkxPQVQ2NCwgTWFuYWdlZEZsb2F0NjRBcnJheSwgbWVtb3J5TWFuYWdlciB9IGZyb20gJy4vbWVtb3J5LnRzJztcblxuY29uc3QgVEVNUCA9IEFycmF5KDQpO1xuXG4vKiogQSAyRCB2ZWN0b3IuICovXG5leHBvcnQgY2xhc3MgVmVjMiBleHRlbmRzIE1hbmFnZWRGbG9hdDY0QXJyYXk8Mj4gaW1wbGVtZW50cyBWZWM8Mj4ge1xuICBwdWJsaWMgY29uc3RydWN0b3IoeCA9IDAsIHkgPSAwKSB7XG4gICAgc3VwZXIobWVtb3J5TWFuYWdlci5jcmVhdGUoMikpO1xuICAgIHRoaXMuc2V0KFt4LCB5XSk7XG4gIH1cblxuICBwdWJsaWMgb3ZlcnJpZGUgZ2V0IGxlbmd0aCgpOiAyIHtcbiAgICByZXR1cm4gMjtcbiAgfVxuXG4gIHB1YmxpYyBhZGQocmhzOiBWZWMyKTogdGhpcyB7XG4gICAgYWRkKHRoaXMsIHJocyk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBwdWJsaWMgc3ViKHJoczogVmVjMik6IHRoaXMge1xuICAgIHN1Yih0aGlzLCByaHMpO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgcHVibGljIG11bChtOiBNYXQyKTogdGhpcyB7XG4gICAgbXVsKG0sIHRoaXMsIDIsIHRydWUpO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqIFByZW11bHRpcGxpZXMgM3gzIG1hdHJpeCB0byB0aGlzLiAqL1xuICBwdWJsaWMgbXVsTWF0MyhtOiBNYXQzKTogdGhpcyB7XG4gICAgY29uc3QgbGVmdCA9IChtLmJ5dGVPZmZzZXQgLyBCWVRFU19QRVJfRkxPQVQ2NCkgfCAwO1xuICAgIGNvbnN0IHJpZ2h0ID0gKHRoaXMuYnl0ZU9mZnNldCAvIEJZVEVTX1BFUl9GTE9BVDY0KSB8IDA7XG4gICAgY29uc3QgdmlldyA9IG1lbW9yeU1hbmFnZXIudmlldztcblxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMjsgKytpKSB7XG4gICAgICBsZXQgZiA9IDA7XG4gICAgICBmb3IgKGxldCBqID0gMDsgaiA8IDI7ICsraikge1xuICAgICAgICBmICs9IHZpZXdbbGVmdCArIGogKiAzICsgaV0gKiB2aWV3W3JpZ2h0ICsgal07XG4gICAgICB9XG4gICAgICBmICs9IHZpZXdbbGVmdCArIDIgKiAzICsgaV07XG4gICAgICBURU1QW2ldID0gZjtcbiAgICB9XG5cbiAgICB2aWV3W3JpZ2h0ICsgMF0gPSBURU1QWzBdO1xuICAgIHZpZXdbcmlnaHQgKyAxXSA9IFRFTVBbMV07XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBwdWJsaWMgZG90KHJoczogVmVjMik6IG51bWJlciB7XG4gICAgcmV0dXJuIGRvdCh0aGlzLCByaHMpO1xuICB9XG5cbiAgcHVibGljIGxlcnAocmhzOiBWZWMyLCB0OiBudW1iZXIpOiB0aGlzIHtcbiAgICBsZXJwKHRoaXMsIHJocywgdCk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBwdWJsaWMgc2NhbGUoZmFjdG9yOiBudW1iZXIpOiB0aGlzIHtcbiAgICBzY2FsZSh0aGlzLCBmYWN0b3IpO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgcHVibGljIG5vcm1hbGl6ZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gbm9ybWFsaXplKHRoaXMpO1xuICB9XG59XG5cbi8qKiBBIDNEIHZlY3Rvci4gKi9cbmV4cG9ydCBjbGFzcyBWZWMzIGV4dGVuZHMgTWFuYWdlZEZsb2F0NjRBcnJheTwzPiBpbXBsZW1lbnRzIFZlYzwzPiB7XG4gIHB1YmxpYyBjb25zdHJ1Y3Rvcih4ID0gMCwgeSA9IDAsIHogPSAwKSB7XG4gICAgc3VwZXIobWVtb3J5TWFuYWdlci5jcmVhdGUoMykpO1xuICAgIHRoaXMuc2V0KFt4LCB5LCB6XSk7XG4gIH1cblxuICBwdWJsaWMgb3ZlcnJpZGUgZ2V0IGxlbmd0aCgpOiAzIHtcbiAgICByZXR1cm4gMztcbiAgfVxuXG4gIHB1YmxpYyBhZGQocmhzOiBWZWMzKTogdGhpcyB7XG4gICAgYWRkKHRoaXMsIHJocyk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBwdWJsaWMgc3ViKHJoczogVmVjMyk6IHRoaXMge1xuICAgIHN1Yih0aGlzLCByaHMpO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgcHVibGljIG11bChtOiBNYXQzKTogdGhpcyB7XG4gICAgbXVsKG0sIHRoaXMsIDMsIHRydWUpO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqIFByZW11bHRpcGxpZXMgNHg0IG1hdHJpeCB0byB0aGlzLiAqL1xuICBwdWJsaWMgbXVsTWF0NChtOiBNYXQ0KTogdGhpcyB7XG4gICAgY29uc3QgbGVmdCA9IChtLmJ5dGVPZmZzZXQgLyBCWVRFU19QRVJfRkxPQVQ2NCkgfCAwO1xuICAgIGNvbnN0IHJpZ2h0ID0gKHRoaXMuYnl0ZU9mZnNldCAvIEJZVEVTX1BFUl9GTE9BVDY0KSB8IDA7XG4gICAgY29uc3QgdmlldyA9IG1lbW9yeU1hbmFnZXIudmlldztcblxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMzsgKytpKSB7XG4gICAgICBsZXQgZiA9IDA7XG4gICAgICBmb3IgKGxldCBqID0gMDsgaiA8IDM7ICsraikge1xuICAgICAgICBmICs9IHZpZXdbbGVmdCArIGogKiA0ICsgaV0gKiB2aWV3W3JpZ2h0ICsgal07XG4gICAgICB9XG4gICAgICBmICs9IHZpZXdbbGVmdCArIDMgKiA0ICsgaV07XG4gICAgICBURU1QW2ldID0gZjtcbiAgICB9XG5cbiAgICB2aWV3W3JpZ2h0ICsgMF0gPSBURU1QWzBdO1xuICAgIHZpZXdbcmlnaHQgKyAxXSA9IFRFTVBbMV07XG4gICAgdmlld1tyaWdodCArIDJdID0gVEVNUFsyXTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKiBBc3NpZ24gY3Jvc3MgcHJvZHVjdCBvZiB0aGlzIHdpdGggUkhTIHRvIHRoaXMuICovXG4gIHB1YmxpYyBjcm9zcyhyaHM6IFZlYzMpOiB0aGlzIHtcbiAgICBjb25zdCBsZWZ0ID0gKHRoaXMuYnl0ZU9mZnNldCAvIEJZVEVTX1BFUl9GTE9BVDY0KSB8IDA7XG4gICAgY29uc3QgcmlnaHQgPSAocmhzLmJ5dGVPZmZzZXQgLyBCWVRFU19QRVJfRkxPQVQ2NCkgfCAwO1xuICAgIGNvbnN0IHZpZXcgPSBtZW1vcnlNYW5hZ2VyLnZpZXc7XG4gICAgY29uc3QgeSA9IHZpZXdbbGVmdCArIDJdICogdmlld1tyaWdodCArIDBdIC0gdmlld1tyaWdodCArIDJdICogdmlld1tsZWZ0ICsgMF07XG4gICAgY29uc3QgeiA9IHZpZXdbbGVmdCArIDBdICogdmlld1tyaWdodCArIDFdIC0gdmlld1tyaWdodCArIDBdICogdmlld1tsZWZ0ICsgMV07XG4gICAgdmlld1tsZWZ0ICsgMF0gPSB2aWV3W2xlZnQgKyAxXSAqIHZpZXdbcmlnaHQgKyAyXSAtIHZpZXdbcmlnaHQgKyAxXSAqIHZpZXdbbGVmdCArIDJdO1xuICAgIHZpZXdbbGVmdCArIDFdID0geTtcbiAgICB2aWV3W2xlZnQgKyAyXSA9IHo7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBwdWJsaWMgZG90KHJoczogVmVjMyk6IG51bWJlciB7XG4gICAgcmV0dXJuIGRvdCh0aGlzLCByaHMpO1xuICB9XG5cbiAgcHVibGljIGxlcnAocmhzOiBWZWMzLCB0OiBudW1iZXIpOiB0aGlzIHtcbiAgICBsZXJwKHRoaXMsIHJocywgdCk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBwdWJsaWMgc2NhbGUoZmFjdG9yOiBudW1iZXIpOiB0aGlzIHtcbiAgICBzY2FsZSh0aGlzLCBmYWN0b3IpO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgcHVibGljIG5vcm1hbGl6ZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gbm9ybWFsaXplKHRoaXMpO1xuICB9XG59XG5cbi8qKiBBIDREIHZlY3Rvci4gKi9cbmV4cG9ydCBjbGFzcyBWZWM0IGV4dGVuZHMgTWFuYWdlZEZsb2F0NjRBcnJheTw0PiBpbXBsZW1lbnRzIFZlYzw0PiB7XG4gIHB1YmxpYyBjb25zdHJ1Y3Rvcih4ID0gMCwgeSA9IDAsIHogPSAwLCB3ID0gMCkge1xuICAgIHN1cGVyKG1lbW9yeU1hbmFnZXIuY3JlYXRlKDQpKTtcbiAgICB0aGlzLnNldChbeCwgeSwgeiwgd10pO1xuICB9XG5cbiAgcHVibGljIG92ZXJyaWRlIGdldCBsZW5ndGgoKTogNCB7XG4gICAgcmV0dXJuIDQ7XG4gIH1cblxuICBwdWJsaWMgYWRkKHJoczogVmVjNCk6IHRoaXMge1xuICAgIGFkZCh0aGlzLCByaHMpO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgcHVibGljIHN1YihyaHM6IFZlYzQpOiB0aGlzIHtcbiAgICBzdWIodGhpcywgcmhzKTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIHB1YmxpYyBtdWwobTogTWF0NCk6IHRoaXMge1xuICAgIG11bChtLCB0aGlzLCA0LCB0cnVlKTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIHB1YmxpYyBkb3QocmhzOiBWZWM0KTogbnVtYmVyIHtcbiAgICByZXR1cm4gZG90KHRoaXMsIHJocyk7XG4gIH1cblxuICBwdWJsaWMgbGVycChyaHM6IFZlYzQsIHQ6IG51bWJlcik6IHRoaXMge1xuICAgIGxlcnAodGhpcywgcmhzLCB0KTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIHB1YmxpYyBzY2FsZShmYWN0b3I6IG51bWJlcik6IHRoaXMge1xuICAgIHNjYWxlKHRoaXMsIGZhY3Rvcik7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBwdWJsaWMgbm9ybWFsaXplKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBub3JtYWxpemUodGhpcyk7XG4gIH1cbn1cbiJdLCJtYXBwaW5ncyI6Ik9BQ1NBLEdBQUcsQ0FBRUMsR0FBRyxDQUFFQyxJQUFJLENBQUVDLEdBQUcsQ0FBRUMsU0FBUyxDQUFFQyxLQUFLLENBQUVDLEdBQUcsMkJBRTFDQyxpQkFBaUIsQ0FBRUMsbUJBQW1CLENBQUVDLGFBQWEsbUJBRTlELEtBQU0sQ0FBQUMsSUFBSSxDQUFHQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBR3JCLE1BQU8sTUFBTSxDQUFBQyxJQUFJLFFBQVMsQ0FBQUosbUJBQXlDLENBQzFESyxXQUFXQSxDQUFDQyxDQUFDLENBQUcsQ0FBQyxDQUFFQyxDQUFDLENBQUcsQ0FBQyxDQUFFLENBQy9CLEtBQUssQ0FBQ04sYUFBYSxDQUFDTyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FDOUIsSUFBSSxDQUFDQyxHQUFHLENBQUMsQ0FBQ0gsQ0FBQyxDQUFFQyxDQUFDLENBQUMsQ0FDakIsQ0FFQSxHQUFvQixDQUFBRyxNQUFNQSxDQUFBLENBQU0sQ0FDOUIsTUFBTyxFQUNULENBRU9sQixHQUFHQSxDQUFDbUIsR0FBUyxDQUFRLENBQzFCbkIsR0FBRyxDQUFDLElBQUksQ0FBRW1CLEdBQUcsQ0FBQyxDQUNkLE1BQU8sS0FDVCxDQUVPYixH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