@doegis/core
Version:
DOE GIS API
3 lines (1 loc) • 1.56 kB
JavaScript
import{a as r}from"../../../chunks/vec2f64.js";import{e as n,b as t,a as i,g as e,i as c,c as u,n as o}from"../../../chunks/vec3.js";import{c as s}from"../../../chunks/vec3f64.js";import{signedDistance as f,normal as l}from"../../../geometry/support/plane.js";function p(r,n,t){return r[0]*n[0]+r[1]*n[1]+r[2]*n[2]+r[3]<t}function a(r,n,t){const i=n[0],e=n[1],c=n[2];return!(r[0][0]*i+r[0][1]*e+r[0][2]*c+r[0][3]>t)&&(!(r[1][0]*i+r[1][1]*e+r[1][2]*c+r[1][3]>t)&&(!(r[2][0]*i+r[2][1]*e+r[2][2]*c+r[2][3]>t)&&(!(r[3][0]*i+r[3][1]*e+r[3][2]*c+r[3][3]>t)&&(!(r[4][0]*i+r[4][1]*e+r[4][2]*c+r[4][3]>t)&&!(r[5][0]*i+r[5][1]*e+r[5][2]*c+r[5][3]>t)))))}function m(r,n,t,i){return b(r,n,null,k(i,n,t,!1))}function d(r,n){for(let t=0;t<6;t++){if(f(r[t],n)>0)return!1}return!0}function h(r,n,t,i){return b(r,n,t,k(i,n,t,!0))}function j(r,c,u,o){const s=n(u,t(r,o,c));return i(r,c,e(r,u,s))}const g={dir:s(),len:0,clip:r()};function k(r,n,i,s){const f=g;return r?(i&&s&&(f.len=c(n,i)),u(f.dir,r)):s?(f.len=c(n,i),t(f.dir,i,n),e(f.dir,f.dir,1/f.len)):(t(f.dir,i,n),o(f.dir,f.dir)),f}function v(r,t,i){const e=n(l(r),i.dir),c=-f(r,t);if(c<0&&e>=0)return!1;if(e>-1e-6&&e<1e-6)return c>0;if((c<0||e<0)&&!(c<0&&e<0))return!0;const u=c/e;return e>0?u<i.clip[1]&&(i.clip[1]=u):u>i.clip[0]&&(i.clip[0]=u),i.clip[0]<=i.clip[1]}function b(r,n,t,i){i.clip[0]=0,i.clip[1]=t?i.len:Number.MAX_VALUE;for(let e=0;e<r.length;e++)if(!v(r[e],n,i))return!1;return!0}export{j as closestPointOnRay,h as frustumLineSegment,d as frustumPoint,m as frustumRay,a as frustumSphere,p as planeSphere};