@doegis/core
Version:
DOE GIS API
3 lines (1 loc) • 1.78 kB
JavaScript
import{floatEqualAbsolute as t}from"../../core/mathUtils.js";import{d as n,h as r,v as s,b as e,a as o,j as u,w as a,c,i}from"../../chunks/vec2.js";import{d as f,a as p}from"../../chunks/vec2f64.js";function h(t,n){return t[0]*n[1]-t[1]*n[0]}function E(t,r,s){const e=(r[0]-t[0])*(s[1]-t[1])-(r[1]-t[1])*(s[0]-t[0]);return Math.abs(e)/n(r,s)}function I(t,n,o){const u=r(o,n)/s(o);return e(t,o,u)}function L(t,n,r,s,e=r){return o(M,s,r),o(A,n,e),I(R,A,M),u(t,e,R)}function N(t,n,e,u){o(M,u,e),o(A,n,e);const i=r(M,A)/s(M);return i>0?a(t,e,M,i):c(t,e)}function m(t,n,r,s){o(M,n,r);const e=s/i(M);return a(t,r,M,e)}function d(n,r){return L(A,r,n.start,n.end),t(A[0],r[0])&&t(A[1],r[1])?[f(r)]:[]}function y(n,r,s){return m(A,s,n,r),t(A[0],s[0])&&t(A[1],s[1])?[f(s)]:[]}function j(t,n){const r=t.start,s=t.end,e=n.start,u=n.end,c=o(M,s,r),i=o(k,u,e),f=h(c,i);if(Math.abs(f)<=l)return[];const p=o(A,r,e),E=h(i,p)/f,I=h(c,p)/f;if(E>=0){if(I>=0||n.type===b.LINE)return[a(R,r,c,E)]}else if(t.type===b.LINE&&(I>=0||n.type===b.LINE))return[a(R,r,c,E)];return[]}function v(t,n,e){const u=[],c=o(M,t.end,t.start),i=o(k,t.start,n),f=s(c),p=2*r(c,i),h=p*p-4*f*(s(i)-e*e);if(0===h){const n=-p/(2*f);(t.type===b.LINE||n>=0)&&u.push(a(R,t.start,c,n))}else if(h>0){const n=Math.sqrt(h),r=(-p+n)/(2*f);(t.type===b.LINE||r>=0)&&u.push(a(R,t.start,c,r));const s=(-p-n)/(2*f);(t.type===b.LINE||s>=0)&&u.push(a(A,t.start,c,s))}return u}var b;!function(t){t[t.RAY=0]="RAY",t[t.LINE=1]="LINE"}(b||(b={}));const l=1e-6,M=p(),k=p(),A=p(),R=p();export{b as LineType,h as cross,y as intersectCircleAndPoint,d as intersectLineAndPoint,j as intersectLineAndRay,v as intersectLineLikeAndCircle,E as pointToLineDistance,I as projectPoint,m as projectPointToCircle,L as projectPointToLine,N as projectPointToRay};