vicowa-web-components
Version:
2 lines • 1.82 kB
JavaScript
export const toDegrees=t=>void 0===t?void 0:180*t/Math.PI;export const toRadians=t=>void 0===t?void 0:t*Math.PI/180;export const angleToPoint=(t,o)=>({x:(o||1)*Math.cos(toRadians(t)),y:(o||1)*Math.sin(toRadians(t))});export const pointToAngle=t=>0===t.x&&0===t.y?0:0===t.x?t.y>0?90:-90:0===t.y?t.x>0?0:180:t.x>0?toDegrees(Math.atan(t.y/t.x)):180+toDegrees(Math.atan(t.y/t.x));export const vectorLength=t=>Math.sqrt(t.x*t.x+t.y*t.y+(t.z||0)*(t.z||0));export const vectorSqrLength=t=>t.x*t.x+t.y*t.y+(t.z||0)*(t.z||0);export const vectorSubtract=(t,o)=>({x:t.x-o.x,y:t.y-o.y,z:(t.z||0)-(o.z||0)});export const vectorAdd=(t,o)=>({x:t.x+o.x,y:t.y+o.y,z:(t.z||0)+(o.z||0)});export const vectorMultiply=(t,o)=>({x:t.x*o,y:t.y*o,z:(t.z||0)*o});export const crossProduct=(t,o)=>({x:t.y*o.z-t.z*o.y,y:t.z*o.x-t.x*o.z,z:t.x*o.y-t.y*o.x});export const dotProduct=(t,o)=>t.x*o.x+t.y*o.y+(t.z||0)*(o.z||0);export const unitVector=t=>{const o=vectorLength(t);return{x:t.x/o,y:t.y/o,z:t.z/o}};export const square=t=>t*t;export const intersectRayAndPlane=(t,o,r,c,e)=>{const d=vectorSubtract(c,r),n=vectorSubtract(e,r),x=crossProduct(d,n),s=dotProduct(x,o);let u=null;if(0!==s){const c=dotProduct(x,vectorSubtract(r,t))/s;u=c>0?vectorAdd(t,vectorMultiply(o,c)):null}return u};export const intersectRayAndTriangle=(t,o,r,c,e)=>{const d=vectorSubtract(c,r),n=vectorSubtract(e,r),x=crossProduct(d,n),s=dotProduct(x,o);let u=null;if(0!==s){const c=dotProduct(x,vectorSubtract(r,t))/s;if(c>0){u=vectorAdd(t,vectorMultiply(o,c));const e=vectorSubtract(u,r),x=(a=dotProduct(d,n))*a-dotProduct(d,d)*dotProduct(n,n),s=(dotProduct(d,n)*dotProduct(e,n)-dotProduct(n,n)*dotProduct(e,d))/x,y=(dotProduct(d,n)*dotProduct(e,d)-dotProduct(d,d)*dotProduct(e,n))/x;s>=0&&y>=0&&s+y<=1||(u=null)}}var a;return u};
//# sourceMappingURL=mathHelpers.js.map