/*
All material copyright Esri, All Rights Reserved, unless otherwise specified.
See https://js.arcgis.com/5.0/esri/copyright.txt for details.
*/
import{set as o,dot as i,min as r,max as t,subtract as s,add as n,scale as e,projectAndScale as a}from"../../../../core/libs/gl-matrix-2/math/vec2.js";import{h as c,i as f,L as m,j as p}from"../../../../chunks/vec32.js";import{fromValues as g,ZEROS as u}from"../../../../core/libs/gl-matrix-2/factories/vec3f64.js";import{d as b,u as I}from"../../../../chunks/boundedPlane.js";import{sv2d as N}from"../../../../geometry/support/vectorStacks.js";import{MoveVertex as l}from"../operations/MoveVertex.js";import{RotateVertex as d}from"../operations/RotateVertex.js";import{ScaleVertex as j}from"../operations/ScaleVertex.js";import{UpdateVertices as x}from"../operations/UpdateVertices.js";function V(o,i){return E(o,i,!1)}function T(o,i){return E(o,i,!0)}function E(o,i,r){if(o instanceof x){if(o.operation instanceof l)return h(o.operation,i,r),!0;if(o.operation instanceof d)return v(o.operation,i,r),!0;if(o.operation instanceof j)return F(o.operation,i,r),!0}return!1}function h(o,i,r=!1){const t=r?-1:1,s=g(t*o.dx,t*o.dy,t*o.dz);f(i.origin,i.origin,s),I(i)}function v(o,i,r=!1){const t=r?-o.angle:o.angle;m(i.basis1,i.basis1,u,t),m(i.basis2,i.basis2,u,t),I(i)}function F(o,i,r=!1){const t=r?1/o.factor1:o.factor1,s=r?1/o.factor2:o.factor2;p(i.basis1,i.basis1,t),p(i.basis2,i.basis2,s),a(i.origin,i.origin,o.origin,o.axis1,t),a(i.origin,i.origin,o.origin,o.axis2,s),I(i)}function S(a,m,p,g,u=!1){g||(g=b());const l=o(N.get(),a[1],-a[0]),d=o(N.get(),Number.POSITIVE_INFINITY,Number.POSITIVE_INFINITY),j=o(N.get(),Number.NEGATIVE_INFINITY,Number.NEGATIVE_INFINITY),x=N.get(),V=m.allVerticesUnordered;V.forEach(({pos:s})=>{o(x,i(a,s),i(l,s)),r(d,d,x),t(j,j,x)});const T=1e-6,E=o(N.get(),j[0]-d[0]<T?p/2:0,j[1]-d[1]<T?p/2:0);s(d,d,E),n(j,j,E);const h=u?V.reduce((o,i)=>o+(i.pos[2]??0),0)/V.length:0;return e(g.basis1,a,(j[0]-d[0])/2),e(g.basis2,l,(j[1]-d[1])/2),c(g.origin,d[0]*a[0]+d[1]*l[0],d[0]*a[1]+d[1]*l[1],h),f(g.origin,g.origin,g.basis1),f(g.origin,g.origin,g.basis2),I(g),g}export{V as apply,T as applyInverse,S as calculateOrientedBounds};
