createPolylineVolumeOutlineGeometry.js 3.7 KB

1
  1. define(["./defaultValue-81eec7ed","./Matrix2-e3fb4559","./arrayRemoveDuplicates-85770175","./BoundingRectangle-b88064b7","./Transforms-98ffa11d","./Cartesian3-7e9cc2ff","./ComponentDatatype-aaeec80f","./PolylineVolumeGeometryLibrary-22aaee12","./Check-741c5f3c","./GeometryAttribute-b025f9a8","./GeometryAttributes-32b29525","./IndexDatatype-f1e3f799","./Math-5f585871","./PolygonPipeline-6f83d8b1","./Matrix4-d34187af","./RuntimeError-26acdd3b","./_commonjsHelpers-3aae1032-26891ab7","./combine-3c023bda","./WebGLConstants-508b9636","./EllipsoidTangentPlane-fa1337e1","./AxisAlignedBoundingBox-37250ed6","./IntersectionTests-73b87d72","./Plane-4f75b3df","./PolylinePipeline-de59c85a","./EllipsoidGeodesic-6de45192","./EllipsoidRhumbLine-9c6b32ea"],(function(e,t,n,i,o,a,r,l,s,p,c,d,u,y,f,h,g,m,E,b,_,P,k,C,L,T){"use strict";function D(n){const i=(n=e.defaultValue(n,e.defaultValue.EMPTY_OBJECT)).polylinePositions,o=n.shapePositions;this._positions=i,this._shape=o,this._ellipsoid=t.Ellipsoid.clone(e.defaultValue(n.ellipsoid,t.Ellipsoid.WGS84)),this._cornerType=e.defaultValue(n.cornerType,l.CornerType.ROUNDED),this._granularity=e.defaultValue(n.granularity,u.CesiumMath.RADIANS_PER_DEGREE),this._workerName="createPolylineVolumeOutlineGeometry";let r=1+i.length*a.Cartesian3.packedLength;r+=1+o.length*t.Cartesian2.packedLength,this.packedLength=r+t.Ellipsoid.packedLength+2}D.pack=function(n,i,o){let r;o=e.defaultValue(o,0);const l=n._positions;let s=l.length;for(i[o++]=s,r=0;r<s;++r,o+=a.Cartesian3.packedLength)a.Cartesian3.pack(l[r],i,o);const p=n._shape;for(s=p.length,i[o++]=s,r=0;r<s;++r,o+=t.Cartesian2.packedLength)t.Cartesian2.pack(p[r],i,o);return t.Ellipsoid.pack(n._ellipsoid,i,o),o+=t.Ellipsoid.packedLength,i[o++]=n._cornerType,i[o]=n._granularity,i};const G=t.Ellipsoid.clone(t.Ellipsoid.UNIT_SPHERE),v={polylinePositions:void 0,shapePositions:void 0,ellipsoid:G,height:void 0,cornerType:void 0,granularity:void 0};D.unpack=function(n,i,o){let r;i=e.defaultValue(i,0);let l=n[i++];const s=new Array(l);for(r=0;r<l;++r,i+=a.Cartesian3.packedLength)s[r]=a.Cartesian3.unpack(n,i);l=n[i++];const p=new Array(l);for(r=0;r<l;++r,i+=t.Cartesian2.packedLength)p[r]=t.Cartesian2.unpack(n,i);const c=t.Ellipsoid.unpack(n,i,G);i+=t.Ellipsoid.packedLength;const d=n[i++],u=n[i];return e.defined(o)?(o._positions=s,o._shape=p,o._ellipsoid=t.Ellipsoid.clone(c,o._ellipsoid),o._cornerType=d,o._granularity=u,o):(v.polylinePositions=s,v.shapePositions=p,v.cornerType=d,v.granularity=u,new D(v))};const A=new i.BoundingRectangle;return D.createGeometry=function(e){const t=e._positions,s=n.arrayRemoveDuplicates(t,a.Cartesian3.equalsEpsilon);let u=e._shape;if(u=l.PolylineVolumeGeometryLibrary.removeDuplicatesFromShape(u),s.length<2||u.length<3)return;y.PolygonPipeline.computeWindingOrder2D(u)===y.WindingOrder.CLOCKWISE&&u.reverse();const f=i.BoundingRectangle.fromPoints(u,A);return function(e,t){const n=new c.GeometryAttributes;n.position=new p.GeometryAttribute({componentDatatype:r.ComponentDatatype.DOUBLE,componentsPerAttribute:3,values:e});const i=t.length,a=n.position.values.length/3,l=e.length/3/i,s=d.IndexDatatype.createTypedArray(a,2*i*(l+1));let u,y,f=0;u=0;let h=u*i;for(y=0;y<i-1;y++)s[f++]=y+h,s[f++]=y+h+1;for(s[f++]=i-1+h,s[f++]=h,u=l-1,h=u*i,y=0;y<i-1;y++)s[f++]=y+h,s[f++]=y+h+1;for(s[f++]=i-1+h,s[f++]=h,u=0;u<l-1;u++){const e=i*u,t=e+i;for(y=0;y<i;y++)s[f++]=y+e,s[f++]=y+t}return new p.Geometry({attributes:n,indices:d.IndexDatatype.createTypedArray(a,s),boundingSphere:o.BoundingSphere.fromVertices(e),primitiveType:p.PrimitiveType.LINES})}(l.PolylineVolumeGeometryLibrary.computePositions(s,u,f,e,!1),u)},function(n,i){return e.defined(i)&&(n=D.unpack(n,i)),n._ellipsoid=t.Ellipsoid.clone(n._ellipsoid),D.createGeometry(n)}}));