@cearth/tools 2.3.0 → 2.5.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.
- package/dist/math/transform.d.ts +20 -3
- package/dist/math/transform.d.ts.map +1 -1
- package/dist/tools.iife.js +24 -24
- package/dist/tools.js +248 -239
- package/dist/tools.umd.cjs +1 -1
- package/package.json +2 -2
package/dist/tools.umd.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
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&<(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"})});
|
|
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,M){"use strict";function wt(t){return v(t)||A(t)||z(t)}function v(t){return"modelMatrix"in t}function A(t){return"position"in t}function z(t){return"positions"in t}const N={[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 F=(t=>(t[t.x=0]="x",t[t.y=1]="y",t[t.z=2]="z",t))(F||{});l.Xyz_Hpr=(t=>(t.x="roll",t.y="pitch",t.z="heading",t))(l.Xyz_Hpr||{}),(t=>{function o(r){for(let[i,s]of Object.entries(t))if(r===s)return i}t.toKey=o;function a(r){return new n.Cartesian3(r.roll,-r.pitch,-r.heading)}t.toCartesian3=a;function e(r){return new n.HeadingPitchRoll(-r[o("heading")],-r[o("pitch")],r[o("roll")])}t.toHeadingPitchRoll=e})(l.Xyz_Hpr||(l.Xyz_Hpr={}));var L=(t=>(t[t.heading=0]="heading",t[t.pitch=1]="pitch",t[t.roll=2]="roll",t))(L||{});function B(t){const o=t?.world,{translation:a,rotation:e,scale:r}=o&&typeof o=="object"?o:{translation:o,rotation:o,scale:o};return{...t,worldTranslation:a,worldRotation:e,worldScale:r}}function P(t){if(t.axis){const{axis:a,angle:e}=t;return n.Quaternion.fromAxisAngle(a,e)}const o=l.Xyz_Hpr.toHeadingPitchRoll(t);return n.Quaternion.fromHeadingPitchRoll(o)}function ht(t,o,a){const e=n.Matrix3.fromQuaternion(t),r=n.Matrix4.fromRotation(e),i=n.Matrix4.inverseTransformation(o,new n.Matrix4),s=n.Matrix4.multiply(i,r,r);return V(s)}function V(t,o){const a=n.Matrix4.getMatrix3(t,new n.Matrix3),e=n.Quaternion.fromRotationMatrix(a);return n.HeadingPitchRoll.fromQuaternion(e,o)}function xt(t,o,a){a=a??new n.Matrix4;const e=n.Matrix4.inverse(o,new n.Matrix4);return n.Matrix4.multiply(e,t,a)}function J(t,o,a){let e=n.Quaternion.computeAxis(t,new n.Cartesian3);if(e.equals(n.Cartesian3.ZERO))return null;const r=n.Quaternion.computeAngle(t);return e=n.Matrix4.multiplyByPointAsVector(o,e,e),n.Quaternion.fromAxisAngle(e,r)}function Ct(t,o,a){let e=n.Quaternion.computeAxis(t,new n.Cartesian3);if(e.equals(n.Cartesian3.ZERO))return null;const r=n.Quaternion.computeAngle(t),i=n.Matrix4.inverse(o,new n.Matrix4);return e=n.Matrix4.multiplyByPointAsVector(i,e,e),n.Quaternion.fromAxisAngle(e,r)}function D(t,o){let{translation:a,rotation:e,scale:r}=t;const{referFrame:i,worldTranslation:s,worldRotation:f,worldScale:c}=B(o);let d=null;return a&&(s||(a=n.Matrix4.multiplyByPointAsVector(i,a,new n.Cartesian3))),e&&(d=P(e),f||(d=J(d,i))),r&&(c||(r=n.Matrix4.multiplyByPointAsVector(i,r,new n.Cartesian3))),{translation:a,rotation:d,scale:r}}function W(t,o){let{translation:a,rotation:e,scale:r}=t;const{referFrame:i,worldTranslation:s,worldRotation:f,worldScale:c}=B(o),d=i?n.Matrix4.inverse(i,new n.Matrix4):null;let y=null;if(a&&s&&(a=n.Matrix4.multiplyByPointAsVector(d,a,new n.Cartesian3)),e&&(y=P(e),f)){let u=n.Quaternion.computeAxis(y,new n.Cartesian3);if(!u.equals(n.Cartesian3.ZERO)){const g=n.Quaternion.computeAngle(y);u=n.Matrix4.multiplyByPointAsVector(d,u,u),y=n.Quaternion.fromAxisAngle(u,g)}}return r&&c&&(r=n.Matrix4.multiplyByPointAsVector(d,r,new n.Cartesian3)),{translation:a,rotation:y,scale:r}}function k(t,o){const a=o?.defaultMatrix;let{translation:e,rotation:r,scale:i}=D(t,o);if(a){if(e||(e=n.Matrix4.getTranslation(a,new n.Cartesian3)),!r){const f=n.Matrix4.getMatrix3(a,new n.Matrix3);r=n.Quaternion.fromRotationMatrix(f)}i||(i=n.Matrix4.getScale(a,new n.Cartesian3))}const s=new n.TranslationRotationScale(e??void 0,r??void 0,i??void 0);return n.Matrix4.fromTranslationRotationScale(s)}function Tt(t){const{translation:o,rotation:a,scale:e}=t,r=a?P(a):void 0,i=new n.TranslationRotationScale(o??void 0,r,e??void 0);return n.Matrix4.fromTranslationRotationScale(i)}function E(t,o,a){const e=n.Cartesian3.subtract(o,t,new n.Cartesian3),r=n.Cartesian3.subtract(a,t,new n.Cartesian3),i=n.Cartesian3.cross(e,r,e);return n.Cartesian3.normalize(i,e)}function Rt(t,o,a){const e=E(t,o,a);return n.Plane.fromPointNormal(e,t)}function*Pt(t,o=!0,a,e){const r=t.length,i=o?r:r-1,s=a||e?n.Cartesian3.prototype.equalsEpsilon:n.Cartesian3.prototype.equals;for(let f=0;f<i;f++){const c=t[f];let d=(f+1)%r,y=t[d],u=f;for(;s.call(c,y,a,e);){if(d=(++u+1)%r,d===f)return;y=t[d]}f=u,yield[c,y]}}function m(t,o,a){a=a??new n.Matrix4;const e=n.Matrix4.inverse(o,new n.Matrix4),r=n.Matrix4.multiply(t,e,e);return n.Matrix4.multiply(o,r,a)}function mt(t,o,a,e){e=e??new n.Matrix4;const r=n.Matrix4.inverse(a,new n.Matrix4);let i=n.Matrix4.multiply(r,t,r);return i=n.Matrix4.multiply(o,i,i),n.Matrix4.multiply(a,i,e)}function vt(t,o,a){const e=n.Matrix4.fromTranslation(t);return m(e,o,a)}function At(t,o,a,e){const r=n.Quaternion.fromAxisAngle(t,o),i=n.Matrix3.fromQuaternion(r),s=n.Matrix4.fromRotation(i);return m(s,a,e)}function Dt(t,o,a){const e=n.Matrix4.fromScale(t);return m(e,o,a)}function St(t,o,a){const e=n.Matrix3.fromScale(o);if(a)for(const r of t)n.Cartesian3.subtract(r,a,r),n.Matrix3.multiplyByVector(e,r,r),n.Cartesian3.add(r,a,r);else{const r=n.Matrix3.fromScale(o);for(const i of t)n.Matrix3.multiplyByVector(r,i,i)}return t}function Ot(t,o){const{translation:a,rotation:e,scale:r}=t;let i;if(e){const{axis:f,angle:c}=e;i=n.Quaternion.fromAxisAngle(f,c)}const s=new n.TranslationRotationScale(a??void 0,i,r??void 0);return n.Matrix4.fromTranslationRotationScale(s,o??void 0)}function b(t,o,a){a??=new n.TranslationRotationScale;const e=n.Matrix4.pack(t,[]),r=[],i=[],s=[],f=o?M.MatrixComposeOrder[o]:M.MatrixComposeOrder.trs;return M.mat4_decompose_quat(r,s,i,e,f),n.Cartesian3.unpack(r,0,a.translation),n.Cartesian3.unpack(i,0,a.scale),n.Quaternion.unpack(s,0,a.rotation),a}function It(t,o){return b(t,null,o)}function q(t,o,a){const e=n.Cartesian3.pack(t.translation,[]),r=n.Cartesian3.pack(t.scale,[]),i=n.Quaternion.pack(t.rotation,[]),s=o?M.MatrixComposeOrder[o]:M.MatrixComposeOrder.trs,f=M.mat4_compose_quat([],e,i,r,s);return n.Matrix4.unpack(f,0,a)}const Bt=n.Matrix4.fromTranslationRotationScale;function U(t,o){const a=n.Matrix4.inverse(t,new n.Matrix4),e=new n.Matrix4;function r(s,f){return f=q(s,o,f),n.Matrix4.multiply(t,f,f)}function i(s,f){return n.Matrix4.multiply(a,s,e),b(e,o,f)}return{compose:r,decompose:i,referInverse:a}}function Vt(t,o,a){const e=n.Transforms.eastNorthUpToFixedFrame(t,a??void 0);return{...U(e,o),refer:e}}function bt(t){let o=t.boundingSphere;if(o)return o;let a=t.geometryInstances;if(a){a=Array.isArray(a)?a:[a];const r=a.map(i=>i.geometry.boundingSphere);return n.BoundingSphere.fromBoundingSpheres(r)}const e=t.positions;return e?.length>0?n.BoundingSphere.fromPoints(e):null}function Qt(t,o){o=o??new n.Cartesian3;const a=t.position;if(a)return a instanceof n.Cartesian3?a:a.getValue(n.JulianDate.now(),o);const e=t.modelMatrix;if(e)return n.Matrix4.getTranslation(e,o);const r=t.positions;return r?.length>0?n.BoundingSphere.fromPoints(r).center:null}function Gt(t,o,a){let{translation:e,rotation:r,scale:i}=D(o,a);const s=new n.TranslationRotationScale(e??void 0,r??void 0,i??void 0),f=n.Matrix4.fromTranslationRotationScale(s);return j(t,f)}function j(t,o){const a=t.modelMatrix;if(a)return n.Matrix4.multiply(o,a,a),t.modelMatrix=a,!0;const e=t.position;if(e){if("scale"in t){const i=n.Matrix4.getTranslation(o,new n.Cartesian3);n.Cartesian3.add(e,i,e);const s=t.scale??1,f=n.Matrix4.getScale(o,new n.Cartesian3);t.scale=n.Cartesian3.maximumComponent(f)*s}else n.Matrix4.multiplyByPoint(o,e,e);return t.position=e,!0}const r=t.positions;if(r?.length>0){for(const i of r)n.Matrix4.multiplyByPoint(o,i,i);return t.positions=r,!0}return!1}function _t(t,o,a){const e=X(t),r=k(o,{...a,defaultMatrix:e});return Y(t,r)}function Y(t,o){if(v(t))return t.modelMatrix=o,!0;const a=n.Matrix4.getTranslation(o,new n.Cartesian3);if(A(t)){if(t.position=a,"scale"in t){const r=n.Matrix4.getScale(o,new n.Cartesian3);t.scale=n.Cartesian3.maximumComponent(r)}return!0}const e=t.positions;if(e?.length>0){const r=n.BoundingSphere.fromPoints(e);n.Cartesian3.subtract(a,r.center,a);for(const i of e)n.Cartesian3.add(i,a,i);return t.positions=e,!0}return!1}function X(t){if(v(t))return t.modelMatrix;if(A(t)){const a=t.position,e=t.scale??1,r=new n.TranslationRotationScale(a,void 0,new n.Cartesian3(e,e,e));return n.Matrix4.fromTranslationRotationScale(r)}const o=t.positions;if(o?.length>0){const a=n.BoundingSphere.fromPoints(o);return n.Matrix4.fromTranslation(a.center)}return null}function Ht(t,o){let{translation:a,rotation:e,scale:r}=D(o,o);const{reset:i,referFrame:s}=o,f=n.JulianDate.now(),c=!i;if(e){let h=e;if(c){const w=t.orientation?.getValue(f);w&&(h=n.Quaternion.multiply(e,w,w))}t.orientation=h}if(a){let h=a;if(c){const w=t.position?.getValue(f);w&&(h=n.Cartesian3.add(w,a,w))}t.position=h}if(!s)return;const{translation:d,rotation:y,scale:u}=W(o,o),g=new n.TranslationRotationScale(d??void 0,y??void 0,u??void 0);let p=n.Matrix4.fromTranslationRotationScale(g);if(p=m(p,s,p),u){const h=t.box;h&&Z(h,u);const w=t.cylinder;w&&K(w,u);const ut=t.ellipse;ut&&$(ut,u);const gt=t.ellipsoid;gt&&tt(gt,u);const pt=t.model;pt&&nt(pt,u,i);const Mt=t.plane;Mt&&at(Mt,u)}const x=t.corridor;x&&ot(x,p,u);const T=t.polygon;T&&et(T,p,u);const C=t.polyline;C&&rt(C,p,u);const R=t.polylineVolume;R&&it(R,p,u);const I=t.wall;I&<(I,p,u)}function Z(t,o){const a=n.JulianDate.now(),e=t.dimensions?.getValue(a);e&&(t.dimensions=n.Cartesian3.multiplyComponents(e,o,e))}function K(t,o){const a=n.JulianDate.now(),e=t.length?.getValue(a);e!=null&&(t.length=e*o.z);const r=Math.max(o.x,o.y),i=t.topRadius?.getValue(a);i!=null&&(t.topRadius=i*r);const s=o.z,f=t.bottomRadius?.getValue(a);f!=null&&(t.bottomRadius=f*s)}function $(t,o){const a=n.JulianDate.now(),e=Math.max(o.x,o.y),r=o.z,i=t.semiMajorAxis?.getValue(a);i!=null&&(t.semiMajorAxis=i*e);const s=t.semiMinorAxis?.getValue(a);s!=null&&(t.semiMinorAxis=s*e);const f=t.height?.getValue(a);f!=null&&(t.height=f*r);const c=t.extrudedHeight?.getValue(a);c!=null&&(t.extrudedHeight=c*r)}function tt(t,o){const a=n.JulianDate.now(),e=t.radii?.getValue(a);e!=null&&(t.radii=n.Cartesian3.multiplyComponents(e,o,e));const r=t.innerRadii?.getValue(a);r!=null&&(t.innerRadii=n.Cartesian3.multiplyComponents(r,o,r))}function nt(t,o,a){let e=n.Cartesian3.maximumComponent(o);if(!a){const r=n.JulianDate.now(),i=t.scale?.getValue(r)??1;e*=i}t.scale=e}function at(t,o){const a=n.JulianDate.now(),e=n.Cartesian2.fromCartesian3(o),r=t.dimensions?.getValue(a);r&&(t.dimensions=n.Cartesian2.multiplyComponents(r,e,r))}function ot(t,o,a){const e=n.JulianDate.now(),r=new n.Cartesian3,i=t.positions?.getValue(e);if(i?.length>0){for(const u of i)n.Matrix4.multiplyByPoint(o,u,u);t.dimensions=i}const s=a??n.Matrix4.getScale(o,r),f=Math.max(s.x,s.y);t.width?.getValue(e)!=null&&(t.width=f*scale);const d=t.height?.getValue(e),y=s.z;d!=null&&(t.height=d*y)}function et(t,o,a){const e=n.JulianDate.now(),r=new n.Cartesian3,i=t.hierarchy?.getValue(e);i&&(Q(i,o),t.hierarchy=i);const f=(a??n.Matrix4.getScale(o,r)).z,c=t.height?.getValue(e);c!=null&&(t.height=c*f);const d=t.extrudedHeight?.getValue(e);d!=null&&(t.extrudedHeight=d*f)}function Q(t,o){const{positions:a,holes:e}=t;for(const r of a)n.Matrix4.multiplyByPoint(o,r,r);t.positions=a;for(const r of e)Q(r,o)}function rt(t,o,a){const e=n.JulianDate.now(),r=new n.Cartesian3,i=t.positions?.getValue(e);if(i?.length>0){for(const d of i)n.Matrix4.multiplyByPoint(o,d,d);t.positions=i}const s=a??n.Matrix4.getScale(o,r),f=Math.max(s.x,s.y);t.width?.getValue(e)!=null&&(t.width=f*scale)}function it(t,o,a){const e=n.JulianDate.now(),r=new n.Cartesian3,i=t.positions?.getValue(e);if(i?.length>0){for(const d of i)n.Matrix4.multiplyByPoint(o,d,d);t.positions=i}const s=a??n.Matrix4.getScale(o,r),f=n.Cartesian2.fromCartesian3(s),c=t.shape?.getValue(e);if(c!=null){for(const d of c)n.Cartesian2.multiplyComponents(d,f,d);t.shape=c}}function lt(t,o,a){const e=n.JulianDate.now(),r=new n.Cartesian3,i=t.positions?.getValue(e);if(i?.length>0){for(const y of i)n.Matrix4.multiplyByPoint(o,y,y);t.positions=i}const f=(a??n.Matrix4.getScale(o,r)).z,c=t.minimumHeights?.getValue(e);c!=null&&(graphicsgraphics.minimumHeights=c.map(y=>y*f));const d=t.maximumHeights?.getValue(e);d!=null&&(graphicsgraphics.maximumHeights=d.map(y=>y*f))}function zt(t,o,a){const e=n.JulianDate.now(),r=t.position?.getValue(e);if(!r)return null;const i=t.orientation?.getValue(e),s=t.model?.scale?.getValue(e)??1,f=new n.Cartesian3(s,s,s),c=o(r,a),d=n.Matrix4.inverse(c,new n.Matrix4),y=n.Matrix4.multiplyByPoint(d,r,new n.Cartesian3),u={translation:y,position:r,scale:f,rotation:new n.Cartesian3};let g;if(i){const T=n.Matrix3.fromQuaternion(i),C=n.Matrix4.fromRotation(T),R=n.Matrix4.multiply(d,C,C),I=V(R);g=l.Xyz_Hpr.toCartesian3(I),u.rotation=g}const p=new n.TranslationRotationScale(y??void 0,g?P(g):void 0,f??void 0);let x=n.Matrix4.fromTranslationRotationScale(p);return u.matrix=x,u}function Nt(t){return t.values.length/t.componentsPerAttribute}function Ft(t){return n.ComponentDatatype.getSizeInBytes(t.componentDatatype)*t.componentsPerAttribute}function Lt(t){const{componentDatatype:o,vertexBuffer:a}=t,e=N[o];if(!e)throw new Error("不支持的数据类型");const r=a.sizeInBytes,i=n.ComponentDatatype.getSizeInBytes(o),s=r/i;let f=new e(s);return a.getBufferData(f,0,0,r),f}new n.Cartesian2,new n.Cartesian3,new n.Cartesian4;const G=[new n.Cartesian2,new n.Cartesian2,new n.Cartesian2,new n.Cartesian2],S=[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 Jt=[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 Wt(t,o=[]){const{stride:a,vertexArray:e}=t,r=e.length/a,i=S[0];for(let s=0;s<r;s++)t.encoding.decodePosition(e,s,i),n.Cartesian3.pack(i,o,o.length);return o}function kt(t,o,a){return t.encoding.decodePosition(t.vertexArray,o,a)}function st(t){const{stride:o,vertices:a,indices:e,encoding:r}=t,i=a.length/o,s=S[0],f=new Float32Array(i*3),c=G[0],d=new Float32Array(i*2),y=new Float32Array(i);for(let u=0;u<i;u++){r.decodePosition(a,u,s),n.Cartesian3.pack(s,f,u*3);const g=r.decodeHeight(a,u);y[u]=g,r.decodeTextureCoordinates(a,u,c),n.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 _(t,o){const a=t._surface._tilesToRender,e=[],r=new n.Rectangle;for(const i of a){const{rectangle:s}=i;n.Rectangle.intersection(o,s,r)&&e.push(i)}return e}function Et(t){const o=t._surface._tilesToRender;return ft(o)}function ft(t){const o=new Set;for(const i of t)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(t){return t.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 qt(t){const{x:o,y:a,level:e}=t;return t.data.terrainData.upsample(t.tilingScheme,o,a,e,o,a,e)}function ct(t,o,a){const{east:e,north:r,south:i,west:s}=o,f=Jt[0];f.longitude=s,f.latitude=i;const c=t.positionToTileXY(f,a,G[0]);f.longitude=e,f.latitude=r;const d=t.positionToTileXY(f,a,G[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 Ut=32767;function jt(t,o=new n.Cartesian3){return n.Matrix3.getScale(t.halfAxes,o),n.Cartesian3.multiplyByScalar(o,2*Ut,o),o}function O(t,o,a){return a=t.getLocalCurvature(o,a),a.x=1/a.x,a.y=1/a.y,a}function Yt(t,o,a){a=O(t,o,a);const e=Math.PI/180;return n.Cartesian2.multiplyByScalar(a,e,a)}function dt(t){const{_quantizedVertices:o,_indices:a}=t,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 Xt(t,o,a,e){const r=await t.requestTileGeometry(o,a,e);if(!r)return null;const i=dt(r),s=[data._minimumHeight,data._maximumHeight],f=t.tilingScheme.tileXYToRectangle(o,a,e),c=M.getMatrixOfQuantizedMeshTerrainData(f,s),d=n.Matrix4.fromArray(c,void 0),y=["u","v","height"],u=new M.Geometry({...i,positionNames:y}),g=new n.Cartesian3;return u.mapForAggregate(y,(p,x)=>(n.Cartesian3.fromArray(p,0,g),n.Matrix4.multiplyByPoint(d,g,g),new n.Cartographic(g.x,g.y,g.z)))}async function Zt(t,o,a){const{min:e,max:r}=ct(t.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(t,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(t,o,a,e){return t.getTileDataAvailable(o,a,e)?(await t.loadTileDataAvailability(o,a,e),t.requestTileGeometry(o,a,e)):Promise.reject("不可用")}async function Kt(t,o){const a=n.Rectangle.fromCartesianArray(o),e=n.Cartographic.toCartesian(n.Rectangle.center(a)),r=O(t.ellipsoid,e),i=[r.x,r.y,1],s=_(t,a),f=H(s),c=n.Transforms.eastNorthUpToFixedFrame(e);n.Matrix4.inverseTransformation(c,c);const d=o.map(g=>{const p=n.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:T,uv:C,height:R}=p.attributes;y+=await M.workerApi.computeRelationAreaOfPolygon2Terrain({args:[{...p,...x,positionNames:["position"],region:d,matrix:n.Matrix4.pack(c,[]),relation:M.GeometricRelation.Contain|M.GeometricRelation.Intersect,scale:i}],transfer:[T.array.buffer,C.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=>n.Cartesian3.pack(p,[]));return y=M.computeSignAreaOfPolygon3(g),Math.abs(y)}return y}function $t(t,o){const a=n.Rectangle.fromCartesianArray(o),e=n.Cartographic.toCartesian(n.Rectangle.center(a)),r=O(t.ellipsoid,e),i=[r.x,r.y,1],s=_(t,a),f=H(s),c=n.Transforms.eastNorthUpToFixedFrame(e);n.Matrix4.inverseTransformation(c,c);const d=o.map(u=>{const g=n.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:n.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=>n.Cartesian3.pack(g,[]));return y=M.computeSignAreaOfPolygon3(u),Math.abs(y)}return y}l.CartesianAxis=F,l.HeadingPitchRollComponent=L,l.applyMatrixReferFrame=mt,l.applyTransformInPrimitive=j,l.applyTransformInfoPrimitive=Gt,l.componentDatatypeTypedArrayMap=N,l.computeAttributeSizeInBytes=Ft,l.computeNormalOfCoplanars=E,l.computeTerrainAreaOfPolygon=$t,l.computeTerrainAreaOfPolygon_worker=Kt,l.computeVertexNumOfAttribute=Nt,l.createPlaneOfCoplanars=Rt,l.flatTransformInfoOptions=B,l.getAttributeData=Lt,l.getBoundingSphere=bt,l.getDecodePositionsOfTerrainMesh=Wt,l.getEntityInfo=zt,l.getGeometryDataOfQuantizedMeshTerrainData=dt,l.getGeometryDataOfTerrainMesh=st,l.getLevelRangeOfQuadtreeTiles=ft,l.getLocalCurvatureRadius=O,l.getLocalSizePerDegrees=Yt,l.getLocalTransformInfo=W,l.getMatrix4OfTransformInfo=Ot,l.getNeighborPairs=Pt,l.getPosition=Qt,l.getPositionOfTerrainMesh=kt,l.getRenderedQuadtreeTilesOfIntersectRectangle=_,l.getRenderedTileLevelRange=Et,l.getScaleOfTerrainDataByOrientedBoundingBox=jt,l.getTerrainData=yt,l.getTerrainDataOfQuadtreeTile=qt,l.getTerrainDatasOfIntersectRectangle=Zt,l.getTerrainDatasOfQuadtreeTiles=H,l.getTileRangeOfIntersectRectangle=ct,l.getTransform=X,l.getWorldDataOfQuantizedMeshTerrainData=Xt,l.getWorldMatrix=k,l.getWorldTransformInfo=D,l.isMatrixPrimitive=v,l.isPositionListPrimitive=z,l.isPositionPrimitive=A,l.isPrimitiveObject=wt,l.localQuaternionToWorld=J,l.localTRS_WorldMatrix4_Convert=U,l.localTRS_WorldMatrix4_ENU_Convert=Vt,l.makeMatrixReferFrame=m,l.mat4_compose=Bt,l.mat4_composeByOrder=q,l.mat4_decompose=It,l.mat4_decomposeByOrder=b,l.matrix4ToHeadingPitchRoll=V,l.quaternionToHeadingPitchRoll=ht,l.resetTransformInPrimitive=Y,l.resetTransformInfoPrimitive=_t,l.rotateMatrixReferFrame=At,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=Ht,l.transformInfoToMatrix=Tt,l.transformPolygonGraphics=et,l.transformPolygonHierarchy=Q,l.transformPolylineGraphics=rt,l.transformPolylineVolumeGraphics=it,l.transformWallGraphics=lt,l.translationMatrixReferFrame=vt,l.worldMatrixToLocal=xt,l.worldQuaternionToLocal=Ct,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.
|
|
3
|
+
"version": "2.5.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": "^
|
|
68
|
+
"@web-3d/tools": "^3.0.1"
|
|
69
69
|
},
|
|
70
70
|
"scripts": {
|
|
71
71
|
"serve": "vite",
|