UNPKG

@arcgis/core

Version:

ArcGIS Maps SDK for JavaScript: A complete 2D and 3D mapping and data visualization API

3 lines (2 loc) 1.85 kB
/* COPYRIGHT Esri - https://js.arcgis.com/5.0.8/LICENSE.txt */ import{ObjectStack as t}from"../../core/ObjectStack.js";import{subtract as e,length as r,cross as n,scale as o,add as c,dot as p,copy as i}from"../../core/libs/gl-matrix-2/math/vec3.js";import{create as s,clone as f}from"../../core/libs/gl-matrix-2/factories/vec3f64.js";import{create as u,distance2 as a,fromValues as g}from"./lineSegment.js";import{sv3d as m}from"./vectorStacks.js";function j(t){return t?{p0:f(t.p0),p1:f(t.p1),p2:f(t.p2)}:{p0:s(),p1:s(),p2:s()}}function l(t,e,r){const n=w.get();return n.p0=t,n.p1=e,n.p2=r,n}function b(t,e=j()){return h(t.p0,t.p1,t.p2,e)}function h(t,e,r,n=j()){return i(n.p0,t),i(n.p1,e),i(n.p2,r),n}function v(t,r){const o=t.p0,c=t.p1,i=t.p2,s=e(m.get(),c,o),f=e(m.get(),i,c),u=e(m.get(),o,i),j=e(m.get(),r,o),l=e(m.get(),r,c),b=e(m.get(),r,i),h=n(s,s,u),v=p(n(m.get(),s,h),j),x=p(n(m.get(),f,h),l),S=p(n(m.get(),u,h),b);if(v>0&&x>0&&S>0){const t=p(h,j);return t*t/p(h,h)}const d=a(g(o,s,k.get()),r),w=a(g(c,f,k.get()),r),M=a(g(i,u,k.get()),r);return Math.min(d,w,M)}function x(t,e,r){const n=1e-5,{direction:p,origin:i}=e,{p0:s,p1:f,p2:u}=t,a=f[0]-s[0],g=f[1]-s[1],m=f[2]-s[2],j=u[0]-s[0],l=u[1]-s[1],b=u[2]-s[2],h=p[1]*b-l*p[2],v=p[2]*j-b*p[0],x=p[0]*l-j*p[1],S=a*h+g*v+m*x;if(S>-n&&S<n)return!1;const d=1/S,k=i[0]-s[0],w=i[1]-s[1],M=i[2]-s[2],y=d*(k*h+w*v+M*x);if(y<0||y>1)return!1;const O=w*m-g*M,V=M*a-m*k,q=k*g-a*w,z=d*(p[0]*O+p[1]*V+p[2]*q);if(z<0||y+z>1)return!1;if(r){o(r,p,d*(j*O+l*V+b*q)),c(r,i,r)}return!0}function S(t,e,r){const n=e[0]-t[0],o=e[1]-t[1],c=r[0]-t[0],p=r[1]-t[1];return.5*Math.abs(n*p-o*c)}function d(t,o,c){return e(M,o,t),e(y,c,t),.5*r(n(M,M,y))}const k=new t(u),w=new t(()=>j()),M=s(),y=s();export{S as areaPoints2d,d as areaPoints3d,b as copy,j as create,v as distance2,h as fromValues,x as intersectRay,l as wrap};