@cearth/tools 2.1.0 → 2.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- (function(l,n){typeof exports=="object"&&typeof module<"u"?n(exports,require("cesium"),require("@web-3d/tools")):typeof define=="function"&&define.amd?define(["exports","cesium","@web-3d/tools"],n):(l=typeof globalThis<"u"?globalThis:l||self,n(l.Tools={},l.cesium,l.tools))})(this,function(l,n,h){"use strict";function wt(t){return A(t)||S(t)||F(t)}function A(t){return"modelMatrix"in t}function S(t){return"position"in t}function F(t){return"positions"in t}const J={[n.WebGLConstants.BYTE]:Int8Array,[n.WebGLConstants.UNSIGNED_BYTE]:Uint8Array,[n.WebGLConstants.SHORT]:Int16Array,[n.WebGLConstants.UNSIGNED_SHORT]:Uint16Array,[n.WebGLConstants.INT]:Int32Array,[n.WebGLConstants.UNSIGNED_INT]:Uint32Array,[n.WebGLConstants.FLOAT]:Float32Array,[n.WebGLConstants.DOUBLE]:Float64Array};var N=(t=>(t[t.x=0]="x",t[t.y=1]="y",t[t.z=2]="z",t))(N||{});l.Xyz_Hpr=(t=>(t.x="roll",t.y="pitch",t.z="heading",t))(l.Xyz_Hpr||{}),(t=>{function a(r){for(let[i,s]of Object.entries(t))if(r===s)return i}t.toKey=a;function e(r){return new n.Cartesian3(r.roll,-r.pitch,-r.heading)}t.toCartesian3=e;function o(r){return new n.HeadingPitchRoll(-r[a("heading")],-r[a("pitch")],r[a("roll")])}t.toHeadingPitchRoll=o})(l.Xyz_Hpr||(l.Xyz_Hpr={}));var E=(t=>(t[t.heading=0]="heading",t[t.pitch=1]="pitch",t[t.roll=2]="roll",t))(E||{});function b(t){const a=t==null?void 0:t.world,{translation:e,rotation:o,scale:r}=a&&typeof a=="object"?a:{translation:a,rotation:a,scale:a};return{...t,worldTranslation:e,worldRotation:o,worldScale:r}}function P(t){if(t.axis){const{axis:e,angle:o}=t;return n.Quaternion.fromAxisAngle(e,o)}const a=l.Xyz_Hpr.toHeadingPitchRoll(t);return n.Quaternion.fromHeadingPitchRoll(a)}function ht(t,a,e){const o=n.Matrix3.fromQuaternion(t),r=n.Matrix4.fromRotation(o),i=n.Matrix4.inverseTransformation(a,new n.Matrix4),s=n.Matrix4.multiply(i,r,r);return Q(s)}function Q(t,a){const e=n.Matrix4.getMatrix3(t,new n.Matrix3),o=n.Quaternion.fromRotationMatrix(e);return n.HeadingPitchRoll.fromQuaternion(o,a)}function pt(t,a,e){e=e??new n.Matrix4;const o=n.Matrix4.inverse(a,new n.Matrix4);return n.Matrix4.multiply(o,t,e)}function W(t,a,e){let o=n.Quaternion.computeAxis(t,new n.Cartesian3);if(o.equals(n.Cartesian3.ZERO))return null;const r=n.Quaternion.computeAngle(t);return o=n.Matrix4.multiplyByPointAsVector(a,o,o),n.Quaternion.fromAxisAngle(o,r)}function xt(t,a,e){let o=n.Quaternion.computeAxis(t,new n.Cartesian3);if(o.equals(n.Cartesian3.ZERO))return null;const r=n.Quaternion.computeAngle(t),i=n.Matrix4.inverse(a,new n.Matrix4);return o=n.Matrix4.multiplyByPointAsVector(i,o,o),n.Quaternion.fromAxisAngle(o,r)}function O(t,a){let{translation:e,rotation:o,scale:r}=t;const{referFrame:i,worldTranslation:s,worldRotation:c,worldScale:u}=b(a);let y=null;return e&&(s||(e=n.Matrix4.multiplyByPointAsVector(i,e,new n.Cartesian3))),o&&(y=P(o),c||(y=W(y,i))),r&&(u||(r=n.Matrix4.multiplyByPointAsVector(i,r,new n.Cartesian3))),{translation:e,rotation:y,scale:r}}function q(t,a){let{translation:e,rotation:o,scale:r}=t;const{referFrame:i,worldTranslation:s,worldRotation:c,worldScale:u}=b(a),y=i?n.Matrix4.inverse(i,new n.Matrix4):null;let d=null;if(e&&s&&(e=n.Matrix4.multiplyByPointAsVector(y,e,new n.Cartesian3)),o&&(d=P(o),c)){let f=n.Quaternion.computeAxis(d,new n.Cartesian3);if(!f.equals(n.Cartesian3.ZERO)){const g=n.Quaternion.computeAngle(d);f=n.Matrix4.multiplyByPointAsVector(y,f,f),d=n.Quaternion.fromAxisAngle(f,g)}}return r&&u&&(r=n.Matrix4.multiplyByPointAsVector(y,r,new n.Cartesian3)),{translation:e,rotation:d,scale:r}}function _(t,a){const e=a==null?void 0:a.defaultMatrix;let{translation:o,rotation:r,scale:i}=O(t,a);if(e){if(o||(o=n.Matrix4.getTranslation(e,new n.Cartesian3)),!r){const c=n.Matrix4.getMatrix3(e,new n.Matrix3);r=n.Quaternion.fromRotationMatrix(c)}i||(i=n.Matrix4.getScale(e,new n.Cartesian3))}const s=new n.TranslationRotationScale(o??void 0,r??void 0,i??void 0);return n.Matrix4.fromTranslationRotationScale(s)}function Tt(t){const{translation:a,rotation:e,scale:o}=t,r=e?P(e):void 0,i=new n.TranslationRotationScale(a??void 0,r,o??void 0);return n.Matrix4.fromTranslationRotationScale(i)}function k(t,a,e){const o=n.Cartesian3.subtract(a,t,new n.Cartesian3),r=n.Cartesian3.subtract(e,t,new n.Cartesian3),i=n.Cartesian3.cross(o,r,o);return n.Cartesian3.normalize(i,o)}function Ct(t,a,e){const o=k(t,a,e);return n.Plane.fromPointNormal(o,t)}function*Rt(t,a=!0,e,o){const r=t.length,i=a?r:r-1,s=e||o?n.Cartesian3.prototype.equalsEpsilon:n.Cartesian3.prototype.equals;for(let c=0;c<i;c++){const u=t[c];let y=(c+1)%r,d=t[y],f=c;for(;s.call(u,d,e,o);){if(y=(++f+1)%r,y===c)return;d=t[y]}c=f,yield[u,d]}}function v(t,a,e){e=e??new n.Matrix4;const o=n.Matrix4.inverse(a,new n.Matrix4),r=n.Matrix4.multiply(t,o,o);return n.Matrix4.multiply(a,r,e)}function Pt(t,a,e,o){o=o??new n.Matrix4;const r=n.Matrix4.inverse(e,new n.Matrix4);let i=n.Matrix4.multiply(r,t,r);return i=n.Matrix4.multiply(a,i,i),n.Matrix4.multiply(e,i,o)}function vt(t,a,e){const o=n.Matrix4.fromTranslation(t);return v(o,a,e)}function Dt(t,a,e,o){const r=n.Quaternion.fromAxisAngle(t,a),i=n.Matrix3.fromQuaternion(r),s=n.Matrix4.fromRotation(i);return v(s,e,o)}function mt(t,a,e){const o=n.Matrix4.fromScale(t);return v(o,a,e)}function At(t,a,e){const o=n.Matrix3.fromScale(a);if(e)for(const r of t)n.Cartesian3.subtract(r,e,r),n.Matrix3.multiplyByVector(o,r,r),n.Cartesian3.add(r,e,r);else{const r=n.Matrix3.fromScale(a);for(const i of t)n.Matrix3.multiplyByVector(r,i,i)}return t}function St(t,a){const{translation:e,rotation:o,scale:r}=t;let i;if(o){const{axis:c,angle:u}=o;i=n.Quaternion.fromAxisAngle(c,u)}const s=new n.TranslationRotationScale(e??void 0,i,r??void 0);return n.Matrix4.fromTranslationRotationScale(s,a??void 0)}function Ot(t){let a=t.boundingSphere;if(a)return a;let e=t.geometryInstances;if(e){e=Array.isArray(e)?e:[e];const r=e.map(i=>i.geometry.boundingSphere);return n.BoundingSphere.fromBoundingSpheres(r)}const o=t.positions;return(o==null?void 0:o.length)>0?n.BoundingSphere.fromPoints(o):null}function It(t,a){a=a??new n.Cartesian3;const e=t.position;if(e)return e instanceof n.Cartesian3?e:e.getValue(n.JulianDate.now(),a);const o=t.modelMatrix;if(o)return n.Matrix4.getTranslation(o,a);const r=t.positions;return(r==null?void 0:r.length)>0?n.BoundingSphere.fromPoints(r).center:null}function Vt(t,a,e){let{translation:o,rotation:r,scale:i}=O(a,e);const s=new n.TranslationRotationScale(o??void 0,r??void 0,i??void 0),c=n.Matrix4.fromTranslationRotationScale(s);return j(t,c)}function j(t,a){const e=t.modelMatrix;if(e)return n.Matrix4.multiply(a,e,e),t.modelMatrix=e,!0;const o=t.position;if(o){if("scale"in t){const i=n.Matrix4.getTranslation(a,new n.Cartesian3);n.Cartesian3.add(o,i,o);const s=t.scale??1,c=n.Matrix4.getScale(a,new n.Cartesian3);t.scale=n.Cartesian3.maximumComponent(c)*s}else n.Matrix4.multiplyByPoint(a,o,o);return t.position=o,!0}const r=t.positions;if((r==null?void 0:r.length)>0){for(const i of r)n.Matrix4.multiplyByPoint(a,i,i);return t.positions=r,!0}return!1}function Bt(t,a,e){const o=Y(t),r=_(a,{...e,defaultMatrix:o});return U(t,r)}function U(t,a){if(A(t))return t.modelMatrix=a,!0;const e=n.Matrix4.getTranslation(a,new n.Cartesian3);if(S(t)){if(t.position=e,"scale"in t){const r=n.Matrix4.getScale(a,new n.Cartesian3);t.scale=n.Cartesian3.maximumComponent(r)}return!0}const o=t.positions;if((o==null?void 0:o.length)>0){const r=n.BoundingSphere.fromPoints(o);n.Cartesian3.subtract(e,r.center,e);for(const i of o)n.Cartesian3.add(i,e,i);return t.positions=o,!0}return!1}function Y(t){if(A(t))return t.modelMatrix;if(S(t)){const e=t.position,o=t.scale??1,r=new n.TranslationRotationScale(e,void 0,new n.Cartesian3(o,o,o));return n.Matrix4.fromTranslationRotationScale(r)}const a=t.positions;if((a==null?void 0:a.length)>0){const e=n.BoundingSphere.fromPoints(a);return n.Matrix4.fromTranslation(e.center)}return null}function bt(t,a){var B,m;let{translation:e,rotation:o,scale:r}=O(a,a);const{reset:i,referFrame:s}=a,c=n.JulianDate.now(),u=!i;if(o){let x=o;if(u){const w=(B=t.orientation)==null?void 0:B.getValue(c);w&&(x=n.Quaternion.multiply(o,w,w))}t.orientation=x}if(e){let x=e;if(u){const w=(m=t.position)==null?void 0:m.getValue(c);w&&(x=n.Cartesian3.add(w,e,w))}t.position=x}if(!s)return;const{translation:y,rotation:d,scale:f}=q(a,a),g=new n.TranslationRotationScale(y??void 0,d??void 0,f??void 0);let M=n.Matrix4.fromTranslationRotationScale(g);if(M=v(M,s,M),f){const x=t.box;x&&X(x,f);const w=t.cylinder;w&&Z(w,f);const ut=t.ellipse;ut&&K(ut,f);const yt=t.ellipsoid;yt&&$(yt,f);const gt=t.model;gt&&tt(gt,f,i);const Mt=t.plane;Mt&&nt(Mt,f)}const p=t.corridor;p&&at(p,M,f);const T=t.polygon;T&&et(T,M,f);const C=t.polyline;C&&ot(C,M,f);const R=t.polylineVolume;R&&rt(R,M,f);const D=t.wall;D&&it(D,M,f)}function X(t,a){var r;const e=n.JulianDate.now(),o=(r=t.dimensions)==null?void 0:r.getValue(e);o&&(t.dimensions=n.Cartesian3.multiplyComponents(o,a,o))}function Z(t,a){var u,y,d;const e=n.JulianDate.now(),o=(u=t.length)==null?void 0:u.getValue(e);o!=null&&(t.length=o*a.z);const r=Math.max(a.x,a.y),i=(y=t.topRadius)==null?void 0:y.getValue(e);i!=null&&(t.topRadius=i*r);const s=a.z,c=(d=t.bottomRadius)==null?void 0:d.getValue(e);c!=null&&(t.bottomRadius=c*s)}function K(t,a){var y,d,f,g;const e=n.JulianDate.now(),o=Math.max(a.x,a.y),r=a.z,i=(y=t.semiMajorAxis)==null?void 0:y.getValue(e);i!=null&&(t.semiMajorAxis=i*o);const s=(d=t.semiMinorAxis)==null?void 0:d.getValue(e);s!=null&&(t.semiMinorAxis=s*o);const c=(f=t.height)==null?void 0:f.getValue(e);c!=null&&(t.height=c*r);const u=(g=t.extrudedHeight)==null?void 0:g.getValue(e);u!=null&&(t.extrudedHeight=u*r)}function $(t,a){var i,s;const e=n.JulianDate.now(),o=(i=t.radii)==null?void 0:i.getValue(e);o!=null&&(t.radii=n.Cartesian3.multiplyComponents(o,a,o));const r=(s=t.innerRadii)==null?void 0:s.getValue(e);r!=null&&(t.innerRadii=n.Cartesian3.multiplyComponents(r,a,r))}function tt(t,a,e){var r;let o=n.Cartesian3.maximumComponent(a);if(!e){const i=n.JulianDate.now(),s=((r=t.scale)==null?void 0:r.getValue(i))??1;o*=s}t.scale=o}function nt(t,a){var i;const e=n.JulianDate.now(),o=n.Cartesian2.fromCartesian3(a),r=(i=t.dimensions)==null?void 0:i.getValue(e);r&&(t.dimensions=n.Cartesian2.multiplyComponents(r,o,r))}function at(t,a,e){var f,g,M;const o=n.JulianDate.now(),r=new n.Cartesian3,i=(f=t.positions)==null?void 0:f.getValue(o);if((i==null?void 0:i.length)>0){for(const p of i)n.Matrix4.multiplyByPoint(a,p,p);t.dimensions=i}const s=e??n.Matrix4.getScale(a,r),c=Math.max(s.x,s.y);((g=t.width)==null?void 0:g.getValue(o))!=null&&(t.width=c*scale);const y=(M=t.height)==null?void 0:M.getValue(o),d=s.z;y!=null&&(t.height=y*d)}function et(t,a,e){var d,f,g;const o=n.JulianDate.now(),r=new n.Cartesian3,i=(d=t.hierarchy)==null?void 0:d.getValue(o);i&&(G(i,a),t.hierarchy=i);const c=(e??n.Matrix4.getScale(a,r)).z,u=(f=t.height)==null?void 0:f.getValue(o);u!=null&&(t.height=u*c);const y=(g=t.extrudedHeight)==null?void 0:g.getValue(o);y!=null&&(t.extrudedHeight=y*c)}function G(t,a){const{positions:e,holes:o}=t;for(const r of e)n.Matrix4.multiplyByPoint(a,r,r);t.positions=e;for(const r of o)G(r,a)}function ot(t,a,e){var y,d;const o=n.JulianDate.now(),r=new n.Cartesian3,i=(y=t.positions)==null?void 0:y.getValue(o);if((i==null?void 0:i.length)>0){for(const f of i)n.Matrix4.multiplyByPoint(a,f,f);t.positions=i}const s=e??n.Matrix4.getScale(a,r),c=Math.max(s.x,s.y);((d=t.width)==null?void 0:d.getValue(o))!=null&&(t.width=c*scale)}function rt(t,a,e){var y,d;const o=n.JulianDate.now(),r=new n.Cartesian3,i=(y=t.positions)==null?void 0:y.getValue(o);if((i==null?void 0:i.length)>0){for(const f of i)n.Matrix4.multiplyByPoint(a,f,f);t.positions=i}const s=e??n.Matrix4.getScale(a,r),c=n.Cartesian2.fromCartesian3(s),u=(d=t.shape)==null?void 0:d.getValue(o);if(u!=null){for(const f of u)n.Cartesian2.multiplyComponents(f,c,f);t.shape=u}}function it(t,a,e){var d,f,g;const o=n.JulianDate.now(),r=new n.Cartesian3,i=(d=t.positions)==null?void 0:d.getValue(o);if((i==null?void 0:i.length)>0){for(const M of i)n.Matrix4.multiplyByPoint(a,M,M);t.positions=i}const c=(e??n.Matrix4.getScale(a,r)).z,u=(f=t.minimumHeights)==null?void 0:f.getValue(o);u!=null&&(graphicsgraphics.minimumHeights=u.map(M=>M*c));const y=(g=t.maximumHeights)==null?void 0:g.getValue(o);y!=null&&(graphicsgraphics.maximumHeights=y.map(M=>M*c))}function Qt(t,a,e){var T,C,R,D;const o=n.JulianDate.now(),r=(T=t.position)==null?void 0:T.getValue(o);if(!r)return null;const i=(C=t.orientation)==null?void 0:C.getValue(o),s=((D=(R=t.model)==null?void 0:R.scale)==null?void 0:D.getValue(o))??1,c=new n.Cartesian3(s,s,s),u=a(r,e),y=n.Matrix4.inverse(u,new n.Matrix4),d=n.Matrix4.multiplyByPoint(y,r,new n.Cartesian3),f={translation:d,position:r,scale:c,rotation:new n.Cartesian3};let g;if(i){const B=n.Matrix3.fromQuaternion(i),m=n.Matrix4.fromRotation(B),x=n.Matrix4.multiply(y,m,m),w=Q(x);g=l.Xyz_Hpr.toCartesian3(w),f.rotation=g}const M=new n.TranslationRotationScale(d??void 0,g?P(g):void 0,c??void 0);let p=n.Matrix4.fromTranslationRotationScale(M);return f.matrix=p,f}function Gt(t){return t.values.length/t.componentsPerAttribute}function Ht(t){return n.ComponentDatatype.getSizeInBytes(t.componentDatatype)*t.componentsPerAttribute}function zt(t){const{componentDatatype:a,vertexBuffer:e}=t,o=J[a];if(!o)throw new Error("不支持的数据类型");const r=e.sizeInBytes,i=n.ComponentDatatype.getSizeInBytes(a),s=r/i;let c=new o(s);return e.getBufferData(c,0,0,r),c}new n.Cartesian2,new n.Cartesian3,new n.Cartesian4;const H=[new n.Cartesian2,new n.Cartesian2,new n.Cartesian2,new n.Cartesian2],I=[new n.Cartesian3,new n.Cartesian3,new n.Cartesian3,new n.Cartesian3];new n.Cartesian4,new n.Cartesian4,new n.Cartesian4,new n.Cartesian4;const Lt=[new n.Cartographic,new n.Cartographic,new n.Cartographic,new n.Cartographic];new n.Rectangle,new n.Rectangle,new n.Rectangle,new n.Rectangle,new n.Matrix2,new n.Matrix2,new n.Matrix2,new n.Matrix2,new n.Matrix3,new n.Matrix3,new n.Matrix3,new n.Matrix3,new n.Matrix4,new n.Matrix4,new n.Matrix4,new n.Matrix4,new n.Quaternion,new n.Quaternion,new n.Quaternion,new n.Quaternion,new n.HeadingPitchRoll,new n.HeadingPitchRoll,new n.HeadingPitchRoll,new n.HeadingPitchRoll;function Ft(t,a=[]){const{stride:e,vertexArray:o}=t,r=o.length/e,i=I[0];for(let s=0;s<r;s++)t.encoding.decodePosition(o,s,i),n.Cartesian3.pack(i,a,a.length);return a}function Jt(t,a,e){return t.encoding.decodePosition(t.vertexArray,a,e)}function lt(t){const{stride:a,vertices:e,indices:o,encoding:r}=t,i=e.length/a,s=I[0],c=new Float32Array(i*3),u=H[0],y=new Float32Array(i*2),d=new Float32Array(i);for(let f=0;f<i;f++){r.decodePosition(e,f,s),n.Cartesian3.pack(s,c,f*3);const g=r.decodeHeight(e,f);d[f]=g,r.decodeTextureCoordinates(e,f,u),n.Cartesian2.pack(u,y,f*2)}return{attributes:{position:{array:c,vectorSize:3},uv:{array:y,vectorSize:2},height:{array:d,vectorSize:1}},indices:o.slice(),count:i}}function z(t,a){const e=t._surface._tilesToRender,o=[],r=new n.Rectangle;for(const i of e){const{rectangle:s}=i;n.Rectangle.intersection(a,s,r)&&o.push(i)}return o}function Nt(t){const a=t._surface._tilesToRender;return st(a)}function st(t){const a=new Set;for(const i of t)a.add(i.level);const e=[...a],o=Math.min.apply(Math,e),r=Math.max.apply(Math,e);return{min:o,max:r}}function L(t){return t.map(a=>{const{mesh:e,terrainData:o}=a.data,r=lt(e),{x:i,y:s,level:c}=a,u=[o._minimumHeight,o._maximumHeight];return{data:r,encoding:e.encoding,rectangle:a.rectangle,heightRange:u,x:i,y:s,level:c}})}function Et(t){const{x:a,y:e,level:o}=t;return t.data.terrainData.upsample(t.tilingScheme,a,e,o,a,e,o)}function ft(t,a,e){const{east:o,north:r,south:i,west:s}=a,c=Lt[0];c.longitude=s,c.latitude=i;const u=t.positionToTileXY(c,e,H[0]);c.longitude=o,c.latitude=r;const y=t.positionToTileXY(c,e,H[1]),[d,f]=u.x<y.x?[u.x,y.x]:[y.x,u.x],[g,M]=u.y<y.y?[u.y,y.y]:[y.y,u.y];return{min:[d,g],max:[f,M]}}const Wt=32767;function qt(t,a=new n.Cartesian3){return n.Matrix3.getScale(t.halfAxes,a),n.Cartesian3.multiplyByScalar(a,2*Wt,a),a}function V(t,a,e){return e=t.getLocalCurvature(a,e),e.x=1/e.x,e.y=1/e.y,e}function _t(t,a,e){e=V(t,a,e);const o=Math.PI/180;return n.Cartesian2.multiplyByScalar(e,o,e)}function ct(t){const{_quantizedVertices:a,_indices:e}=t,o=a.length/3,r={type:"Float32Array",start:0,vectorSize:1},i={type:"Float32Array",start:o,vectorSize:1},s={type:"Float32Array",start:o*2,vectorSize:1};return{array:new Float32Array(a),attributes:{u:r,v:i,height:s},count:o,indices:e}}async function kt(t,a,e,o){const r=await t.requestTileGeometry(a,e,o);if(!r)return null;const i=ct(r),s=[data._minimumHeight,data._maximumHeight],c=t.tilingScheme.tileXYToRectangle(a,e,o),u=h.getMatrixOfQuantizedMeshTerrainData(c,s),y=n.Matrix4.fromArray(u,void 0),d=["u","v","height"],f=new h.Geometry({...i,positionNames:d}),g=new n.Cartesian3;return f.mapForAggregate(d,(M,p)=>(n.Cartesian3.fromArray(M,0,g),n.Matrix4.multiplyByPoint(y,g,g),new n.Cartographic(g.x,g.y,g.z)))}async function jt(t,a,e){const{min:o,max:r}=ft(t.tilingScheme,a,e),i=[],s=[];for(let u=o[0];u<=r[0];u++)for(let y=o[1];y<=r[1];y++){const d=dt(t,u,y,e);d&&(i.push(d),s.push({x:u,y}))}return(await Promise.all(i)).map(function(u,y){const{x:d,y:f}=s[y];return{x:d,y:f,level:e,data:u}})}async function dt(t,a,e,o){return t.getTileDataAvailable(a,e,o)?(await t.loadTileDataAvailability(a,e,o),t.requestTileGeometry(a,e,o)):Promise.reject("不可用")}async function Ut(t,a){const e=n.Rectangle.fromCartesianArray(a),o=n.Cartographic.toCartesian(n.Rectangle.center(e)),r=V(t.ellipsoid,o),i=[r.x,r.y,1],s=z(t,e),c=L(s),u=n.Transforms.eastNorthUpToFixedFrame(o);n.Matrix4.inverseTransformation(u,u);const y=a.map(g=>{const M=n.Matrix4.multiplyByPoint(u,g,I[2]);return[M.x,M.y]});let d=0;const f=c.map(async g=>{const{data:M,...p}=g,{position:T,uv:C,height:R}=M.attributes;d+=await h.workerApi.computeRelationAreaOfPolygon2Terrain({args:[{...M,...p,positionNames:["position"],region:y,matrix:n.Matrix4.pack(u,[]),relation:h.GeometricRelation.Contain|h.GeometricRelation.Intersect,scale:i}],transfer:[T.array.buffer,C.array.buffer,R.array.buffer,M.indices.buffer]})});if(await Promise.all(f),d===0||isNaN(d)){console.warn("贴地面积计算异常,已回退到椭球面投影面积",d);const g=a.map(M=>n.Cartesian3.pack(M,[]));return d=h.computeSignAreaOfPolygon3(g),Math.abs(d)}return d}function Yt(t,a){const e=n.Rectangle.fromCartesianArray(a),o=n.Cartographic.toCartesian(n.Rectangle.center(e)),r=V(t.ellipsoid,o),i=[r.x,r.y,1],s=z(t,e),c=L(s),u=n.Transforms.eastNorthUpToFixedFrame(o);n.Matrix4.inverseTransformation(u,u);const y=a.map(f=>{const g=n.Matrix4.multiplyByPoint(u,f,I[2]);return[g.x,g.y]});let d=0;for(const f of c){const{data:g,...M}=f;d+=h.computeRelationAreaOfPolygon2Terrain({...g,...M,positionNames:["position"],region:y,matrix:n.Matrix4.pack(u,[]),relation:h.GeometricRelation.Contain|h.GeometricRelation.Intersect,scale:i})}if(d===0||isNaN(d)){console.warn("贴地面积计算异常,已回退到椭球面投影面积",d);const f=a.map(g=>n.Cartesian3.pack(g,[]));return d=h.computeSignAreaOfPolygon3(f),Math.abs(d)}return d}l.CartesianAxis=N,l.HeadingPitchRollComponent=E,l.applyMatrixReferFrame=Pt,l.applyTransformInPrimitive=j,l.applyTransformInfoPrimitive=Vt,l.componentDatatypeTypedArrayMap=J,l.computeAttributeSizeInBytes=Ht,l.computeNormalOfCoplanars=k,l.computeTerrainAreaOfPolygon=Yt,l.computeTerrainAreaOfPolygon_worker=Ut,l.computeVertexNumOfAttribute=Gt,l.createPlaneOfCoplanars=Ct,l.flatTransformInfoOptions=b,l.getAttributeData=zt,l.getBoundingSphere=Ot,l.getDecodePositionsOfTerrainMesh=Ft,l.getEntityInfo=Qt,l.getGeometryDataOfQuantizedMeshTerrainData=ct,l.getGeometryDataOfTerrainMesh=lt,l.getLevelRangeOfQuadtreeTiles=st,l.getLocalCurvatureRadius=V,l.getLocalSizePerDegrees=_t,l.getLocalTransformInfo=q,l.getMatrix4OfTransformInfo=St,l.getNeighborPairs=Rt,l.getPosition=It,l.getPositionOfTerrainMesh=Jt,l.getRenderedQuadtreeTilesOfIntersectRectangle=z,l.getRenderedTileLevelRange=Nt,l.getScaleOfTerrainDataByOrientedBoundingBox=qt,l.getTerrainData=dt,l.getTerrainDataOfQuadtreeTile=Et,l.getTerrainDatasOfIntersectRectangle=jt,l.getTerrainDatasOfQuadtreeTiles=L,l.getTileRangeOfIntersectRectangle=ft,l.getTransform=Y,l.getWorldDataOfQuantizedMeshTerrainData=kt,l.getWorldMatrix=_,l.getWorldTransformInfo=O,l.isMatrixPrimitive=A,l.isPositionListPrimitive=F,l.isPositionPrimitive=S,l.isPrimitiveObject=wt,l.localQuaternionToWorld=W,l.makeMatrixReferFrame=v,l.matrix4ToHeadingPitchRoll=Q,l.quaternionToHeadingPitchRoll=ht,l.resetTransformInPrimitive=U,l.resetTransformInfoPrimitive=Bt,l.rotateMatrixReferFrame=Dt,l.rotationInfoToQuaternion=P,l.scaleBoxGraphics=X,l.scaleCylinderGraphics=Z,l.scaleEllipseGraphics=K,l.scaleEllipsoidGraphics=$,l.scaleMatrixReferFrame=mt,l.scaleModelGraphics=tt,l.scalePlaneGraphics=nt,l.scalePoints=At,l.transformCorridorGraphics=at,l.transformEntity=bt,l.transformInfoToMatrix=Tt,l.transformPolygonGraphics=et,l.transformPolygonHierarchy=G,l.transformPolylineGraphics=ot,l.transformPolylineVolumeGraphics=rt,l.transformWallGraphics=it,l.translationMatrixReferFrame=vt,l.worldMatrixToLocal=pt,l.worldQuaternionToLocal=xt,Object.defineProperty(l,Symbol.toStringTag,{value:"Module"})});
1
+ (function(l,t){typeof exports=="object"&&typeof module<"u"?t(exports,require("cesium"),require("@web-3d/tools")):typeof define=="function"&&define.amd?define(["exports","cesium","@web-3d/tools"],t):(l=typeof globalThis<"u"?globalThis:l||self,t(l.Tools={},l.cesium,l.tools))})(this,function(l,t,M){"use strict";function wt(n){return A(n)||m(n)||z(n)}function A(n){return"modelMatrix"in n}function m(n){return"position"in n}function z(n){return"positions"in n}const N={[t.WebGLConstants.BYTE]:Int8Array,[t.WebGLConstants.UNSIGNED_BYTE]:Uint8Array,[t.WebGLConstants.SHORT]:Int16Array,[t.WebGLConstants.UNSIGNED_SHORT]:Uint16Array,[t.WebGLConstants.INT]:Int32Array,[t.WebGLConstants.UNSIGNED_INT]:Uint32Array,[t.WebGLConstants.FLOAT]:Float32Array,[t.WebGLConstants.DOUBLE]:Float64Array};var _=(n=>(n[n.x=0]="x",n[n.y=1]="y",n[n.z=2]="z",n))(_||{});l.Xyz_Hpr=(n=>(n.x="roll",n.y="pitch",n.z="heading",n))(l.Xyz_Hpr||{}),(n=>{function o(r){for(let[i,s]of Object.entries(n))if(r===s)return i}n.toKey=o;function a(r){return new t.Cartesian3(r.roll,-r.pitch,-r.heading)}n.toCartesian3=a;function e(r){return new t.HeadingPitchRoll(-r[o("heading")],-r[o("pitch")],r[o("roll")])}n.toHeadingPitchRoll=e})(l.Xyz_Hpr||(l.Xyz_Hpr={}));var F=(n=>(n[n.heading=0]="heading",n[n.pitch=1]="pitch",n[n.roll=2]="roll",n))(F||{});function V(n){const o=n?.world,{translation:a,rotation:e,scale:r}=o&&typeof o=="object"?o:{translation:o,rotation:o,scale:o};return{...n,worldTranslation:a,worldRotation:e,worldScale:r}}function P(n){if(n.axis){const{axis:a,angle:e}=n;return t.Quaternion.fromAxisAngle(a,e)}const o=l.Xyz_Hpr.toHeadingPitchRoll(n);return t.Quaternion.fromHeadingPitchRoll(o)}function ht(n,o,a){const e=t.Matrix3.fromQuaternion(n),r=t.Matrix4.fromRotation(e),i=t.Matrix4.inverseTransformation(o,new t.Matrix4),s=t.Matrix4.multiply(i,r,r);return B(s)}function B(n,o){const a=t.Matrix4.getMatrix3(n,new t.Matrix3),e=t.Quaternion.fromRotationMatrix(a);return t.HeadingPitchRoll.fromQuaternion(e,o)}function xt(n,o,a){a=a??new t.Matrix4;const e=t.Matrix4.inverse(o,new t.Matrix4);return t.Matrix4.multiply(e,n,a)}function L(n,o,a){let e=t.Quaternion.computeAxis(n,new t.Cartesian3);if(e.equals(t.Cartesian3.ZERO))return null;const r=t.Quaternion.computeAngle(n);return e=t.Matrix4.multiplyByPointAsVector(o,e,e),t.Quaternion.fromAxisAngle(e,r)}function Tt(n,o,a){let e=t.Quaternion.computeAxis(n,new t.Cartesian3);if(e.equals(t.Cartesian3.ZERO))return null;const r=t.Quaternion.computeAngle(n),i=t.Matrix4.inverse(o,new t.Matrix4);return e=t.Matrix4.multiplyByPointAsVector(i,e,e),t.Quaternion.fromAxisAngle(e,r)}function D(n,o){let{translation:a,rotation:e,scale:r}=n;const{referFrame:i,worldTranslation:s,worldRotation:f,worldScale:c}=V(o);let d=null;return a&&(s||(a=t.Matrix4.multiplyByPointAsVector(i,a,new t.Cartesian3))),e&&(d=P(e),f||(d=L(d,i))),r&&(c||(r=t.Matrix4.multiplyByPointAsVector(i,r,new t.Cartesian3))),{translation:a,rotation:d,scale:r}}function J(n,o){let{translation:a,rotation:e,scale:r}=n;const{referFrame:i,worldTranslation:s,worldRotation:f,worldScale:c}=V(o),d=i?t.Matrix4.inverse(i,new t.Matrix4):null;let y=null;if(a&&s&&(a=t.Matrix4.multiplyByPointAsVector(d,a,new t.Cartesian3)),e&&(y=P(e),f)){let u=t.Quaternion.computeAxis(y,new t.Cartesian3);if(!u.equals(t.Cartesian3.ZERO)){const g=t.Quaternion.computeAngle(y);u=t.Matrix4.multiplyByPointAsVector(d,u,u),y=t.Quaternion.fromAxisAngle(u,g)}}return r&&c&&(r=t.Matrix4.multiplyByPointAsVector(d,r,new t.Cartesian3)),{translation:a,rotation:y,scale:r}}function W(n,o){const a=o?.defaultMatrix;let{translation:e,rotation:r,scale:i}=D(n,o);if(a){if(e||(e=t.Matrix4.getTranslation(a,new t.Cartesian3)),!r){const f=t.Matrix4.getMatrix3(a,new t.Matrix3);r=t.Quaternion.fromRotationMatrix(f)}i||(i=t.Matrix4.getScale(a,new t.Cartesian3))}const s=new t.TranslationRotationScale(e??void 0,r??void 0,i??void 0);return t.Matrix4.fromTranslationRotationScale(s)}function Ct(n){const{translation:o,rotation:a,scale:e}=n,r=a?P(a):void 0,i=new t.TranslationRotationScale(o??void 0,r,e??void 0);return t.Matrix4.fromTranslationRotationScale(i)}function E(n,o,a){const e=t.Cartesian3.subtract(o,n,new t.Cartesian3),r=t.Cartesian3.subtract(a,n,new t.Cartesian3),i=t.Cartesian3.cross(e,r,e);return t.Cartesian3.normalize(i,e)}function Rt(n,o,a){const e=E(n,o,a);return t.Plane.fromPointNormal(e,n)}function*Pt(n,o=!0,a,e){const r=n.length,i=o?r:r-1,s=a||e?t.Cartesian3.prototype.equalsEpsilon:t.Cartesian3.prototype.equals;for(let f=0;f<i;f++){const c=n[f];let d=(f+1)%r,y=n[d],u=f;for(;s.call(c,y,a,e);){if(d=(++u+1)%r,d===f)return;y=n[d]}f=u,yield[c,y]}}function v(n,o,a){a=a??new t.Matrix4;const e=t.Matrix4.inverse(o,new t.Matrix4),r=t.Matrix4.multiply(n,e,e);return t.Matrix4.multiply(o,r,a)}function vt(n,o,a,e){e=e??new t.Matrix4;const r=t.Matrix4.inverse(a,new t.Matrix4);let i=t.Matrix4.multiply(r,n,r);return i=t.Matrix4.multiply(o,i,i),t.Matrix4.multiply(a,i,e)}function At(n,o,a){const e=t.Matrix4.fromTranslation(n);return v(e,o,a)}function mt(n,o,a,e){const r=t.Quaternion.fromAxisAngle(n,o),i=t.Matrix3.fromQuaternion(r),s=t.Matrix4.fromRotation(i);return v(s,a,e)}function Dt(n,o,a){const e=t.Matrix4.fromScale(n);return v(e,o,a)}function St(n,o,a){const e=t.Matrix3.fromScale(o);if(a)for(const r of n)t.Cartesian3.subtract(r,a,r),t.Matrix3.multiplyByVector(e,r,r),t.Cartesian3.add(r,a,r);else{const r=t.Matrix3.fromScale(o);for(const i of n)t.Matrix3.multiplyByVector(r,i,i)}return n}function Ot(n,o){const{translation:a,rotation:e,scale:r}=n;let i;if(e){const{axis:f,angle:c}=e;i=t.Quaternion.fromAxisAngle(f,c)}const s=new t.TranslationRotationScale(a??void 0,i,r??void 0);return t.Matrix4.fromTranslationRotationScale(s,o??void 0)}function k(n,o){o??=new t.TranslationRotationScale;const a=t.Matrix4.pack(n,[]),e=[],r=[],i=[];return M.mat4_decompose(e,r,i,a),t.Cartesian3.unpack(e,0,o.translation),t.Cartesian3.unpack(r,0,o.scale),t.Quaternion.unpack(i,0,o.rotation),o}const q=t.Matrix4.fromTranslationRotationScale;function U(n){const o=t.Matrix4.inverse(n,new t.Matrix4),a=new t.Matrix4;function e(i,s){return s=q(i,s),t.Matrix4.multiply(n,s,s)}function r(i,s){return t.Matrix4.multiply(o,i,a),k(a,s)}return{compose:e,decompose:r,referInverse:o}}function It(n,o){const a=t.Transforms.eastNorthUpToFixedFrame(n,o??void 0);return{...U(a),refer:a}}function Vt(n){let o=n.boundingSphere;if(o)return o;let a=n.geometryInstances;if(a){a=Array.isArray(a)?a:[a];const r=a.map(i=>i.geometry.boundingSphere);return t.BoundingSphere.fromBoundingSpheres(r)}const e=n.positions;return e?.length>0?t.BoundingSphere.fromPoints(e):null}function Bt(n,o){o=o??new t.Cartesian3;const a=n.position;if(a)return a instanceof t.Cartesian3?a:a.getValue(t.JulianDate.now(),o);const e=n.modelMatrix;if(e)return t.Matrix4.getTranslation(e,o);const r=n.positions;return r?.length>0?t.BoundingSphere.fromPoints(r).center:null}function bt(n,o,a){let{translation:e,rotation:r,scale:i}=D(o,a);const s=new t.TranslationRotationScale(e??void 0,r??void 0,i??void 0),f=t.Matrix4.fromTranslationRotationScale(s);return j(n,f)}function j(n,o){const a=n.modelMatrix;if(a)return t.Matrix4.multiply(o,a,a),n.modelMatrix=a,!0;const e=n.position;if(e){if("scale"in n){const i=t.Matrix4.getTranslation(o,new t.Cartesian3);t.Cartesian3.add(e,i,e);const s=n.scale??1,f=t.Matrix4.getScale(o,new t.Cartesian3);n.scale=t.Cartesian3.maximumComponent(f)*s}else t.Matrix4.multiplyByPoint(o,e,e);return n.position=e,!0}const r=n.positions;if(r?.length>0){for(const i of r)t.Matrix4.multiplyByPoint(o,i,i);return n.positions=r,!0}return!1}function Qt(n,o,a){const e=X(n),r=W(o,{...a,defaultMatrix:e});return Y(n,r)}function Y(n,o){if(A(n))return n.modelMatrix=o,!0;const a=t.Matrix4.getTranslation(o,new t.Cartesian3);if(m(n)){if(n.position=a,"scale"in n){const r=t.Matrix4.getScale(o,new t.Cartesian3);n.scale=t.Cartesian3.maximumComponent(r)}return!0}const e=n.positions;if(e?.length>0){const r=t.BoundingSphere.fromPoints(e);t.Cartesian3.subtract(a,r.center,a);for(const i of e)t.Cartesian3.add(i,a,i);return n.positions=e,!0}return!1}function X(n){if(A(n))return n.modelMatrix;if(m(n)){const a=n.position,e=n.scale??1,r=new t.TranslationRotationScale(a,void 0,new t.Cartesian3(e,e,e));return t.Matrix4.fromTranslationRotationScale(r)}const o=n.positions;if(o?.length>0){const a=t.BoundingSphere.fromPoints(o);return t.Matrix4.fromTranslation(a.center)}return null}function Gt(n,o){let{translation:a,rotation:e,scale:r}=D(o,o);const{reset:i,referFrame:s}=o,f=t.JulianDate.now(),c=!i;if(e){let h=e;if(c){const w=n.orientation?.getValue(f);w&&(h=t.Quaternion.multiply(e,w,w))}n.orientation=h}if(a){let h=a;if(c){const w=n.position?.getValue(f);w&&(h=t.Cartesian3.add(w,a,w))}n.position=h}if(!s)return;const{translation:d,rotation:y,scale:u}=J(o,o),g=new t.TranslationRotationScale(d??void 0,y??void 0,u??void 0);let p=t.Matrix4.fromTranslationRotationScale(g);if(p=v(p,s,p),u){const h=n.box;h&&Z(h,u);const w=n.cylinder;w&&K(w,u);const ut=n.ellipse;ut&&$(ut,u);const gt=n.ellipsoid;gt&&tt(gt,u);const pt=n.model;pt&&nt(pt,u,i);const Mt=n.plane;Mt&&at(Mt,u)}const x=n.corridor;x&&ot(x,p,u);const C=n.polygon;C&&et(C,p,u);const T=n.polyline;T&&rt(T,p,u);const R=n.polylineVolume;R&&it(R,p,u);const I=n.wall;I&&lt(I,p,u)}function Z(n,o){const a=t.JulianDate.now(),e=n.dimensions?.getValue(a);e&&(n.dimensions=t.Cartesian3.multiplyComponents(e,o,e))}function K(n,o){const a=t.JulianDate.now(),e=n.length?.getValue(a);e!=null&&(n.length=e*o.z);const r=Math.max(o.x,o.y),i=n.topRadius?.getValue(a);i!=null&&(n.topRadius=i*r);const s=o.z,f=n.bottomRadius?.getValue(a);f!=null&&(n.bottomRadius=f*s)}function $(n,o){const a=t.JulianDate.now(),e=Math.max(o.x,o.y),r=o.z,i=n.semiMajorAxis?.getValue(a);i!=null&&(n.semiMajorAxis=i*e);const s=n.semiMinorAxis?.getValue(a);s!=null&&(n.semiMinorAxis=s*e);const f=n.height?.getValue(a);f!=null&&(n.height=f*r);const c=n.extrudedHeight?.getValue(a);c!=null&&(n.extrudedHeight=c*r)}function tt(n,o){const a=t.JulianDate.now(),e=n.radii?.getValue(a);e!=null&&(n.radii=t.Cartesian3.multiplyComponents(e,o,e));const r=n.innerRadii?.getValue(a);r!=null&&(n.innerRadii=t.Cartesian3.multiplyComponents(r,o,r))}function nt(n,o,a){let e=t.Cartesian3.maximumComponent(o);if(!a){const r=t.JulianDate.now(),i=n.scale?.getValue(r)??1;e*=i}n.scale=e}function at(n,o){const a=t.JulianDate.now(),e=t.Cartesian2.fromCartesian3(o),r=n.dimensions?.getValue(a);r&&(n.dimensions=t.Cartesian2.multiplyComponents(r,e,r))}function ot(n,o,a){const e=t.JulianDate.now(),r=new t.Cartesian3,i=n.positions?.getValue(e);if(i?.length>0){for(const u of i)t.Matrix4.multiplyByPoint(o,u,u);n.dimensions=i}const s=a??t.Matrix4.getScale(o,r),f=Math.max(s.x,s.y);n.width?.getValue(e)!=null&&(n.width=f*scale);const d=n.height?.getValue(e),y=s.z;d!=null&&(n.height=d*y)}function et(n,o,a){const e=t.JulianDate.now(),r=new t.Cartesian3,i=n.hierarchy?.getValue(e);i&&(b(i,o),n.hierarchy=i);const f=(a??t.Matrix4.getScale(o,r)).z,c=n.height?.getValue(e);c!=null&&(n.height=c*f);const d=n.extrudedHeight?.getValue(e);d!=null&&(n.extrudedHeight=d*f)}function b(n,o){const{positions:a,holes:e}=n;for(const r of a)t.Matrix4.multiplyByPoint(o,r,r);n.positions=a;for(const r of e)b(r,o)}function rt(n,o,a){const e=t.JulianDate.now(),r=new t.Cartesian3,i=n.positions?.getValue(e);if(i?.length>0){for(const d of i)t.Matrix4.multiplyByPoint(o,d,d);n.positions=i}const s=a??t.Matrix4.getScale(o,r),f=Math.max(s.x,s.y);n.width?.getValue(e)!=null&&(n.width=f*scale)}function it(n,o,a){const e=t.JulianDate.now(),r=new t.Cartesian3,i=n.positions?.getValue(e);if(i?.length>0){for(const d of i)t.Matrix4.multiplyByPoint(o,d,d);n.positions=i}const s=a??t.Matrix4.getScale(o,r),f=t.Cartesian2.fromCartesian3(s),c=n.shape?.getValue(e);if(c!=null){for(const d of c)t.Cartesian2.multiplyComponents(d,f,d);n.shape=c}}function lt(n,o,a){const e=t.JulianDate.now(),r=new t.Cartesian3,i=n.positions?.getValue(e);if(i?.length>0){for(const y of i)t.Matrix4.multiplyByPoint(o,y,y);n.positions=i}const f=(a??t.Matrix4.getScale(o,r)).z,c=n.minimumHeights?.getValue(e);c!=null&&(graphicsgraphics.minimumHeights=c.map(y=>y*f));const d=n.maximumHeights?.getValue(e);d!=null&&(graphicsgraphics.maximumHeights=d.map(y=>y*f))}function Ht(n,o,a){const e=t.JulianDate.now(),r=n.position?.getValue(e);if(!r)return null;const i=n.orientation?.getValue(e),s=n.model?.scale?.getValue(e)??1,f=new t.Cartesian3(s,s,s),c=o(r,a),d=t.Matrix4.inverse(c,new t.Matrix4),y=t.Matrix4.multiplyByPoint(d,r,new t.Cartesian3),u={translation:y,position:r,scale:f,rotation:new t.Cartesian3};let g;if(i){const C=t.Matrix3.fromQuaternion(i),T=t.Matrix4.fromRotation(C),R=t.Matrix4.multiply(d,T,T),I=B(R);g=l.Xyz_Hpr.toCartesian3(I),u.rotation=g}const p=new t.TranslationRotationScale(y??void 0,g?P(g):void 0,f??void 0);let x=t.Matrix4.fromTranslationRotationScale(p);return u.matrix=x,u}function zt(n){return n.values.length/n.componentsPerAttribute}function Nt(n){return t.ComponentDatatype.getSizeInBytes(n.componentDatatype)*n.componentsPerAttribute}function _t(n){const{componentDatatype:o,vertexBuffer:a}=n,e=N[o];if(!e)throw new Error("不支持的数据类型");const r=a.sizeInBytes,i=t.ComponentDatatype.getSizeInBytes(o),s=r/i;let f=new e(s);return a.getBufferData(f,0,0,r),f}new t.Cartesian2,new t.Cartesian3,new t.Cartesian4;const Q=[new t.Cartesian2,new t.Cartesian2,new t.Cartesian2,new t.Cartesian2],S=[new t.Cartesian3,new t.Cartesian3,new t.Cartesian3,new t.Cartesian3];new t.Cartesian4,new t.Cartesian4,new t.Cartesian4,new t.Cartesian4;const Ft=[new t.Cartographic,new t.Cartographic,new t.Cartographic,new t.Cartographic];new t.Rectangle,new t.Rectangle,new t.Rectangle,new t.Rectangle,new t.Matrix2,new t.Matrix2,new t.Matrix2,new t.Matrix2,new t.Matrix3,new t.Matrix3,new t.Matrix3,new t.Matrix3,new t.Matrix4,new t.Matrix4,new t.Matrix4,new t.Matrix4,new t.Quaternion,new t.Quaternion,new t.Quaternion,new t.Quaternion,new t.HeadingPitchRoll,new t.HeadingPitchRoll,new t.HeadingPitchRoll,new t.HeadingPitchRoll;function Lt(n,o=[]){const{stride:a,vertexArray:e}=n,r=e.length/a,i=S[0];for(let s=0;s<r;s++)n.encoding.decodePosition(e,s,i),t.Cartesian3.pack(i,o,o.length);return o}function Jt(n,o,a){return n.encoding.decodePosition(n.vertexArray,o,a)}function st(n){const{stride:o,vertices:a,indices:e,encoding:r}=n,i=a.length/o,s=S[0],f=new Float32Array(i*3),c=Q[0],d=new Float32Array(i*2),y=new Float32Array(i);for(let u=0;u<i;u++){r.decodePosition(a,u,s),t.Cartesian3.pack(s,f,u*3);const g=r.decodeHeight(a,u);y[u]=g,r.decodeTextureCoordinates(a,u,c),t.Cartesian2.pack(c,d,u*2)}return{attributes:{position:{array:f,vectorSize:3},uv:{array:d,vectorSize:2},height:{array:y,vectorSize:1}},indices:e.slice(),count:i}}function G(n,o){const a=n._surface._tilesToRender,e=[],r=new t.Rectangle;for(const i of a){const{rectangle:s}=i;t.Rectangle.intersection(o,s,r)&&e.push(i)}return e}function Wt(n){const o=n._surface._tilesToRender;return ft(o)}function ft(n){const o=new Set;for(const i of n)o.add(i.level);const a=[...o],e=Math.min.apply(Math,a),r=Math.max.apply(Math,a);return{min:e,max:r}}function H(n){return n.map(o=>{const{mesh:a,terrainData:e}=o.data,r=st(a),{x:i,y:s,level:f}=o,c=[e._minimumHeight,e._maximumHeight];return{data:r,encoding:a.encoding,rectangle:o.rectangle,heightRange:c,x:i,y:s,level:f}})}function Et(n){const{x:o,y:a,level:e}=n;return n.data.terrainData.upsample(n.tilingScheme,o,a,e,o,a,e)}function ct(n,o,a){const{east:e,north:r,south:i,west:s}=o,f=Ft[0];f.longitude=s,f.latitude=i;const c=n.positionToTileXY(f,a,Q[0]);f.longitude=e,f.latitude=r;const d=n.positionToTileXY(f,a,Q[1]),[y,u]=c.x<d.x?[c.x,d.x]:[d.x,c.x],[g,p]=c.y<d.y?[c.y,d.y]:[d.y,c.y];return{min:[y,g],max:[u,p]}}const kt=32767;function qt(n,o=new t.Cartesian3){return t.Matrix3.getScale(n.halfAxes,o),t.Cartesian3.multiplyByScalar(o,2*kt,o),o}function O(n,o,a){return a=n.getLocalCurvature(o,a),a.x=1/a.x,a.y=1/a.y,a}function Ut(n,o,a){a=O(n,o,a);const e=Math.PI/180;return t.Cartesian2.multiplyByScalar(a,e,a)}function dt(n){const{_quantizedVertices:o,_indices:a}=n,e=o.length/3,r={type:"Float32Array",start:0,vectorSize:1},i={type:"Float32Array",start:e,vectorSize:1},s={type:"Float32Array",start:e*2,vectorSize:1};return{array:new Float32Array(o),attributes:{u:r,v:i,height:s},count:e,indices:a}}async function jt(n,o,a,e){const r=await n.requestTileGeometry(o,a,e);if(!r)return null;const i=dt(r),s=[data._minimumHeight,data._maximumHeight],f=n.tilingScheme.tileXYToRectangle(o,a,e),c=M.getMatrixOfQuantizedMeshTerrainData(f,s),d=t.Matrix4.fromArray(c,void 0),y=["u","v","height"],u=new M.Geometry({...i,positionNames:y}),g=new t.Cartesian3;return u.mapForAggregate(y,(p,x)=>(t.Cartesian3.fromArray(p,0,g),t.Matrix4.multiplyByPoint(d,g,g),new t.Cartographic(g.x,g.y,g.z)))}async function Yt(n,o,a){const{min:e,max:r}=ct(n.tilingScheme,o,a),i=[],s=[];for(let c=e[0];c<=r[0];c++)for(let d=e[1];d<=r[1];d++){const y=yt(n,c,d,a);y&&(i.push(y),s.push({x:c,y:d}))}return(await Promise.all(i)).map(function(c,d){const{x:y,y:u}=s[d];return{x:y,y:u,level:a,data:c}})}async function yt(n,o,a,e){return n.getTileDataAvailable(o,a,e)?(await n.loadTileDataAvailability(o,a,e),n.requestTileGeometry(o,a,e)):Promise.reject("不可用")}async function Xt(n,o){const a=t.Rectangle.fromCartesianArray(o),e=t.Cartographic.toCartesian(t.Rectangle.center(a)),r=O(n.ellipsoid,e),i=[r.x,r.y,1],s=G(n,a),f=H(s),c=t.Transforms.eastNorthUpToFixedFrame(e);t.Matrix4.inverseTransformation(c,c);const d=o.map(g=>{const p=t.Matrix4.multiplyByPoint(c,g,S[2]);return[p.x,p.y]});let y=0;const u=f.map(async g=>{const{data:p,...x}=g,{position:C,uv:T,height:R}=p.attributes;y+=await M.workerApi.computeRelationAreaOfPolygon2Terrain({args:[{...p,...x,positionNames:["position"],region:d,matrix:t.Matrix4.pack(c,[]),relation:M.GeometricRelation.Contain|M.GeometricRelation.Intersect,scale:i}],transfer:[C.array.buffer,T.array.buffer,R.array.buffer,p.indices.buffer]})});if(await Promise.all(u),y===0||isNaN(y)){console.warn("贴地面积计算异常,已回退到椭球面投影面积",y);const g=o.map(p=>t.Cartesian3.pack(p,[]));return y=M.computeSignAreaOfPolygon3(g),Math.abs(y)}return y}function Zt(n,o){const a=t.Rectangle.fromCartesianArray(o),e=t.Cartographic.toCartesian(t.Rectangle.center(a)),r=O(n.ellipsoid,e),i=[r.x,r.y,1],s=G(n,a),f=H(s),c=t.Transforms.eastNorthUpToFixedFrame(e);t.Matrix4.inverseTransformation(c,c);const d=o.map(u=>{const g=t.Matrix4.multiplyByPoint(c,u,S[2]);return[g.x,g.y]});let y=0;for(const u of f){const{data:g,...p}=u;y+=M.computeRelationAreaOfPolygon2Terrain({...g,...p,positionNames:["position"],region:d,matrix:t.Matrix4.pack(c,[]),relation:M.GeometricRelation.Contain|M.GeometricRelation.Intersect,scale:i})}if(y===0||isNaN(y)){console.warn("贴地面积计算异常,已回退到椭球面投影面积",y);const u=o.map(g=>t.Cartesian3.pack(g,[]));return y=M.computeSignAreaOfPolygon3(u),Math.abs(y)}return y}l.CartesianAxis=_,l.HeadingPitchRollComponent=F,l.applyMatrixReferFrame=vt,l.applyTransformInPrimitive=j,l.applyTransformInfoPrimitive=bt,l.componentDatatypeTypedArrayMap=N,l.computeAttributeSizeInBytes=Nt,l.computeNormalOfCoplanars=E,l.computeTerrainAreaOfPolygon=Zt,l.computeTerrainAreaOfPolygon_worker=Xt,l.computeVertexNumOfAttribute=zt,l.createPlaneOfCoplanars=Rt,l.flatTransformInfoOptions=V,l.getAttributeData=_t,l.getBoundingSphere=Vt,l.getDecodePositionsOfTerrainMesh=Lt,l.getEntityInfo=Ht,l.getGeometryDataOfQuantizedMeshTerrainData=dt,l.getGeometryDataOfTerrainMesh=st,l.getLevelRangeOfQuadtreeTiles=ft,l.getLocalCurvatureRadius=O,l.getLocalSizePerDegrees=Ut,l.getLocalTransformInfo=J,l.getMatrix4OfTransformInfo=Ot,l.getNeighborPairs=Pt,l.getPosition=Bt,l.getPositionOfTerrainMesh=Jt,l.getRenderedQuadtreeTilesOfIntersectRectangle=G,l.getRenderedTileLevelRange=Wt,l.getScaleOfTerrainDataByOrientedBoundingBox=qt,l.getTerrainData=yt,l.getTerrainDataOfQuadtreeTile=Et,l.getTerrainDatasOfIntersectRectangle=Yt,l.getTerrainDatasOfQuadtreeTiles=H,l.getTileRangeOfIntersectRectangle=ct,l.getTransform=X,l.getWorldDataOfQuantizedMeshTerrainData=jt,l.getWorldMatrix=W,l.getWorldTransformInfo=D,l.isMatrixPrimitive=A,l.isPositionListPrimitive=z,l.isPositionPrimitive=m,l.isPrimitiveObject=wt,l.localQuaternionToWorld=L,l.localTRS_WorldMatrix4_Convert=U,l.localTRS_WorldMatrix4_ENU_Convert=It,l.makeMatrixReferFrame=v,l.mat4_compose=q,l.mat4_decompose=k,l.matrix4ToHeadingPitchRoll=B,l.quaternionToHeadingPitchRoll=ht,l.resetTransformInPrimitive=Y,l.resetTransformInfoPrimitive=Qt,l.rotateMatrixReferFrame=mt,l.rotationInfoToQuaternion=P,l.scaleBoxGraphics=Z,l.scaleCylinderGraphics=K,l.scaleEllipseGraphics=$,l.scaleEllipsoidGraphics=tt,l.scaleMatrixReferFrame=Dt,l.scaleModelGraphics=nt,l.scalePlaneGraphics=at,l.scalePoints=St,l.transformCorridorGraphics=ot,l.transformEntity=Gt,l.transformInfoToMatrix=Ct,l.transformPolygonGraphics=et,l.transformPolygonHierarchy=b,l.transformPolylineGraphics=rt,l.transformPolylineVolumeGraphics=it,l.transformWallGraphics=lt,l.translationMatrixReferFrame=At,l.worldMatrixToLocal=xt,l.worldQuaternionToLocal=Tt,Object.defineProperty(l,Symbol.toStringTag,{value:"Module"})});
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cearth/tools",
3
- "version": "2.1.0",
3
+ "version": "2.3.0",
4
4
  "description": "CEarth 的 工具库",
5
5
  "main": "./dist/tools.umd.cjs",
6
6
  "module": "./dist/tools.js",
@@ -65,7 +65,7 @@
65
65
  }
66
66
  },
67
67
  "dependencies": {
68
- "@web-3d/tools": "^1.0.1"
68
+ "@web-3d/tools": "^2.0.0"
69
69
  },
70
70
  "scripts": {
71
71
  "serve": "vite",