UNPKG

@arcgis/core

Version:

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

6 lines (5 loc) 1.9 kB
/* All material copyright ESRI, All Rights Reserved, unless otherwise specified. See https://js.arcgis.com/4.32/esri/copyright.txt for details. */ import{dot as t,normalize as u,clamp as n,Float as r,length as i,distance as y,abs as s,step as l,Mat3 as c,Vec3 as e,and as a,greaterThan as o,lessThan as p,cond as x,min as m,not as b,equal as d}from"../../graph/glsl.js";import{epsilonHitTest as w}from"./constants.js";import{cross2 as f}from"./utils.js";function v(n,r){return t(n,u(r))}function j(t,u,s){const l=s.subtract(u),c=v(t.subtract(u),l),e=n(c.divide(i(l)),new r(0),new r(1));return y(t,u.add(e.multiply(s.subtract(u))))}function g(t){const u=s(t);return l(u.x.add(u.y).add(u.z),new r(1.05))}function h(t,u,n,i){const y=new c(n.x.multiply(i.y).subtract(i.x.multiply(n.y)),i.x.multiply(u.y).subtract(u.x.multiply(i.y)),u.x.multiply(n.y).subtract(n.x.multiply(u.y)),n.y.subtract(i.y),i.y.subtract(u.y),u.y.subtract(n.y),i.x.subtract(n.x),u.x.subtract(i.x),n.x.subtract(u.x)),s=u.x.multiply(n.y.subtract(i.y)),l=n.x.multiply(i.y.subtract(u.y)),a=i.x.multiply(u.y.subtract(n.y)),o=s.add(l).add(a);return new r(1).divide(o).multiply(y.multiply(new e(1,t)))}function M(t,u,n,i){return d(g(h(t,u,n,i)),new r(1))}function P(t,u,n,i){const y=n.subtract(u),s=i.subtract(u),l=f(y,s),c=a(p(l,new r(w)),o(l,new r(-.05)));return x([a(b(c),M(t.xy,u,n,i)),new r(-1)],[!0,()=>{const r=j(t,u,n),y=j(t,n,i),s=j(t,i,u);return m(m(r,y),s)}])}function q(t){return t.distance.add(1)}function z(t,u,n){const{viewMat3:r,tileMat3:i}=t.view,y=r.multiply(i),s=y.multiply(new e(u.pos,1)),l=y.multiply(new e(n.nextPos1,1)),c=y.multiply(new e(n.nextPos2,1));return P(t.hittestRequest.position,s.xy,l.xy,c.xy)}function R(t,u,n){return y(t,n).subtract(u)}export{j as distPointSegment,P as distPointTriangle,q as failHittest,z as hittestFill,R as hittestMarker,g as inTriangle,v as projectScalar,h as xyToBarycentric};