UNPKG

@doegis/core

Version:

DOE GIS API

3 lines (1 loc) 1.76 kB
import{ObjectStack as t}from"../../core/ObjectStack.js";import{c as n,b as e,f as r,e as o,g as p,a as c,l as s}from"../../chunks/vec3.js";import{a as i,c as u}from"../../chunks/vec3f64.js";import{create as a,distance2 as f,fromValues as g}from"./lineSegment.js";import{sv3d as m}from"./vectorStacks.js";function j(t){return t?{p0:i(t.p0),p1:i(t.p1),p2:i(t.p2)}:{p0:u(),p1:u(),p2:u()}}function h(t,n,e){const r=x.get();return r.p0=t,r.p1=n,r.p2=e,r}function k(t,n=j()){return b(t.p0,t.p1,t.p2,n)}function b(t,e,r,o=j()){return n(o.p0,t),n(o.p1,e),n(o.p2,r),o}function l(t,n){const p=t.p0,c=t.p1,s=t.p2,i=e(m.get(),c,p),u=e(m.get(),s,c),a=e(m.get(),p,s),j=e(m.get(),n,p),h=e(m.get(),n,c),k=e(m.get(),n,s),b=r(i,i,a),l=o(r(m.get(),i,b),j),v=o(r(m.get(),u,b),h),S=o(r(m.get(),a,b),k);if(l>0&&v>0&&S>0){const t=o(b,j);return t*t/o(b,b)}const d=f(g(p,i,M.get()),n),w=f(g(c,u,M.get()),n),x=f(g(s,a,M.get()),n);return Math.min(d,w,x)}function v(t,n,e){const r=1e-5,{direction:o,origin:s}=n,{p0:i,p1:u,p2:a}=t,f=u[0]-i[0],g=u[1]-i[1],m=u[2]-i[2],j=a[0]-i[0],h=a[1]-i[1],k=a[2]-i[2],b=o[1]*k-h*o[2],l=o[2]*j-k*o[0],v=o[0]*h-j*o[1],S=f*b+g*l+m*v;if(S>-r&&S<r)return!1;const d=1/S,w=s[0]-i[0],M=s[1]-i[1],x=s[2]-i[2],O=d*(w*b+M*l+x*v);if(O<0||O>1)return!1;const V=M*m-g*x,q=x*f-m*w,y=w*g-f*M,z=d*(o[0]*V+o[1]*q+o[2]*y);if(z<0||O+z>1)return!1;if(e){p(e,o,d*(j*V+h*q+k*y)),c(e,s,e)}return!0}function S(t,n,e){const r=n[0]-t[0],o=n[1]-t[1],p=e[0]-t[0],c=e[1]-t[1];return.5*Math.abs(r*c-o*p)}function d(t){return S(t.p0,t.p1,t.p2)}function w(t,n,o){return e(O,n,t),e(V,o,t),s(r(O,O,V))/2}const M=new t(a),x=new t((()=>j())),O=u(),V=u();export{d as area2d,S as areaPoints2d,w as areaPoints3d,k as copy,j as create,l as distance2,b as fromValues,v as intersectRay,h as wrap};