cione-comp-lib
Version:
`$ yarn add cione-comp-lib` 或者 `$ npm i cione-comp-lib -S`
2 lines (1 loc) • 2.12 kB
JavaScript
;Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});var a,r=require("./BoundingBox.js"),e=require("./Plane.js"),t=require("../glmatrix/vec3.js"),i=t.default.set,n=t.default.copy,o=t.default.transformMat4,s=Math.min,m=Math.max,l=function(){this.planes=[];for(var a=0;a<6;a++)this.planes.push(new e.default);this.boundingBox=new r.default,this.vertices=[];for(a=0;a<8;a++)this.vertices[a]=t.default.fromValues(0,0,0)};l.prototype={setFromProjection:function(a){var r=this.planes,e=a.array,t=e[0],n=e[1],o=e[2],s=e[3],m=e[4],l=e[5],u=e[6],d=e[7],c=e[8],f=e[9],h=e[10],v=e[11],y=e[12],x=e[13],M=e[14],p=e[15];i(r[0].normal.array,s-t,d-m,v-c),r[0].distance=-(p-y),r[0].normalize(),i(r[1].normal.array,s+t,d+m,v+c),r[1].distance=-(p+y),r[1].normalize(),i(r[2].normal.array,s+n,d+l,v+f),r[2].distance=-(p+x),r[2].normalize(),i(r[3].normal.array,s-n,d-l,v-f),r[3].distance=-(p-x),r[3].normalize(),i(r[4].normal.array,s-o,d-u,v-h),r[4].distance=-(p-M),r[4].normalize(),i(r[5].normal.array,s+o,d+u,v+h),r[5].distance=-(p+M),r[5].normalize();var g=this.boundingBox,z=this.vertices;if(0===p){var B=l/t,j=-M/(h-1),b=-M/(h+1),_=-b/l,q=-j/l;g.min.set(-_*B,-_,b),g.max.set(_*B,_,j),i(z[0],-_*B,-_,b),i(z[1],-_*B,_,b),i(z[2],_*B,-_,b),i(z[3],_*B,_,b),i(z[4],-q*B,-q,j),i(z[5],-q*B,q,j),i(z[6],q*B,-q,j),i(z[7],q*B,q,j)}else{var P=(-1-y)/t,w=(1-y)/t,S=(1-x)/l,T=(-1-x)/l,F=(-1-M)/h,O=(1-M)/h;g.min.set(Math.min(P,w),Math.min(T,S),Math.min(O,F)),g.max.set(Math.max(w,P),Math.max(S,T),Math.max(F,O));var V=g.min.array,k=g.max.array;i(z[0],V[0],V[1],V[2]),i(z[1],V[0],k[1],V[2]),i(z[2],k[0],V[1],V[2]),i(z[3],k[0],k[1],V[2]),i(z[4],V[0],V[1],k[2]),i(z[5],V[0],k[1],k[2]),i(z[6],k[0],V[1],k[2]),i(z[7],k[0],k[1],k[2])}},getTransformedBoundingBox:(a=t.default.create(),function(r,e){var t=this.vertices,i=e.array,l=r.min,u=r.max,d=l.array,c=u.array,f=t[0];o(a,f,i),n(d,a),n(c,a);for(var h=1;h<8;h++)f=t[h],o(a,f,i),d[0]=s(a[0],d[0]),d[1]=s(a[1],d[1]),d[2]=s(a[2],d[2]),c[0]=m(a[0],c[0]),c[1]=m(a[1],c[1]),c[2]=m(a[2],c[2]);return l._dirty=!0,u._dirty=!0,r})};var u=l;exports.default=u;