calculateFlatteningPoint.js 2.1 KB

1
  1. define(["./Cartesian3-7e9cc2ff","./ComponentDatatype-aaeec80f","./createTaskProcessorWorker","./defaultValue-81eec7ed","./Check-741c5f3c","./Math-5f585871","./WebGLConstants-508b9636"],(function(t,e,n,a,i,r,o){"use strict";function y(e,n){let a=0,i=new t.Cartesian3,r=new t.Cartesian3;i=n[0];for(let t=1;t<=n.length;t++){if(r=t!==n.length?n[t]:n[0],o=i,y=r,((s=e).x-o.x)*(y.y-o.y)==(y.x-o.x)*(s.y-o.y)&&Math.min(o.x,y.x)<=s.x&&s.x<=Math.max(o.x,y.x)&&Math.min(o.y,y.y)<=s.y&&s.y<=Math.max(o.y,y.y))return!0;if(e.y>Math.min(i.y,r.y)&&e.y<=Math.max(i.y,r.y)&&e.x<=Math.max(i.x,r.x)&&i.y!==r.y){const t=(e.y-i.y)*(r.x-i.x)/(r.y-i.y)+i.x;(i.x===r.x||e.x<=t)&&a++}i=r}var o,y,s;return a%2!=0}return n((function(n){const i=n.positionLen,r=n.pointLen,o=n.arrBuffer,s=n.sizeInBytes,x=n.flattenData,f=n.flattenHeight,l=n.primitiveId,h=a.defined(n.quantization)?n.quantization:{};let m=!1;const c=n.draco;if(x.length>0){const n={};if(c){const e=[],a=new Uint16Array(s/2),c=new t.Cartesian3(-1/0,-1/0,-1/0),u=new t.Cartesian3(1/0,1/0,1/0),p=o,z=h.range/(1<<h.quantizationBits);for(let n=0;n<r;n++){const a=new t.Cartesian3(h.minValues[0]+p[n*i]*z,h.minValues[1]+p[n*i+1]*z,h.minValues[2]+p[n*i+2]*z);for(let t=0;t<x.length;t++){if(y(a,x[t])){a.z=f[t],m=!0;break}}e.push(a),c.x=Math.max(c.x,a.x),c.y=Math.max(c.y,a.y),c.z=Math.max(c.z,a.z),u.x=Math.min(u.x,a.x),u.y=Math.min(u.y,a.y),u.z=Math.min(u.z,a.z)}let M=0;c.x-u.x>M&&(M=c.x-u.x),c.y-u.y>M&&(M=c.y-u.y),c.z-u.z>M&&(M=c.z-u.z);const C=1<<h.quantizationBits,d=C/M;for(let t=0;t<e.length;t++){const n=e[t],i=Math.floor((n.x-u.x)*d+.5),r=Math.floor((n.y-u.y)*d+.5),o=Math.floor((n.z-u.z)*d+.5);a[3*t]=i,a[3*t+1]=r,a[3*t+2]=o}n.typedArray=a,n.minValues=u,n.normConstant=M/C,n.range=M,n.isUpdate=m,n.primitiveId=l}else{const a=e.ComponentDatatype.createArrayBufferView(e.ComponentDatatype.FLOAT,o.buffer,0,s/e.ComponentDatatype.getSizeInBytes(e.ComponentDatatype.FLOAT));for(let e=0;e<r;e++){const n=new t.Cartesian3(a[e*i],a[e*i+1],a[e*i+2]);for(let t=0;t<x.length;t++){if(y(n,x[t])){a[e*i+2]=f[t],m=!0;break}}}n.typedArray=new Uint8Array(a.buffer),n.isUpdate=m,n.primitiveId=l}return n}}))}));