|
@@ -11,9 +11,9 @@ this.length();b>0?this.multiplyScalar(1/b):this.set(0,0,0);return this},setPosit
|
|
|
1.0E-4&&Math.abs(this.z)<1.0E-4},clone:function(){return new THREE.Vector3(this.x,this.y,this.z)}};THREE.Vector4=function(b,d,c,f){this.set(b||0,d||0,c||0,f||1)};
|
|
|
THREE.Vector4.prototype={set:function(b,d,c,f){this.x=b;this.y=d;this.z=c;this.w=f;return this},copy:function(b){this.set(b.x,b.y,b.z,b.w||1);return this},add:function(b,d){this.set(b.x+d.x,b.y+d.y,b.z+d.z,b.w+d.w);return this},addSelf:function(b){this.set(this.x+b.x,this.y+b.y,this.z+b.z,this.w+b.w);return this},sub:function(b,d){this.set(b.x-d.x,b.y-d.y,b.z-d.z,b.w-d.w);return this},subSelf:function(b){this.set(this.x-b.x,this.y-b.y,this.z-b.z,this.w-b.w);return this},multiplyScalar:function(b){this.set(this.x*
|
|
|
b,this.y*b,this.z*b,this.w*b);return this},divideScalar:function(b){this.set(this.x/b,this.y/b,this.z/b,this.w/b);return this},lerpSelf:function(b,d){this.set(this.x+(b.x-this.x)*d,this.y+(b.y-this.y)*d,this.z+(b.z-this.z)*d,this.w+(b.w-this.w)*d)},clone:function(){return new THREE.Vector4(this.x,this.y,this.z,this.w)}};THREE.Ray=function(b,d){this.origin=b||new THREE.Vector3;this.direction=d||new THREE.Vector3};
|
|
|
-THREE.Ray.prototype={intersectScene:function(b){var d,c,f=b.objects,g=[];b=0;for(d=f.length;b<d;b++){c=f[b];c instanceof THREE.Mesh&&(g=g.concat(this.intersectObject(c)))}g.sort(function(h,j){return h.distance-j.distance});return g},intersectObject:function(b){function d(F,B,T,C){C=C.clone().subSelf(B);T=T.clone().subSelf(B);var V=F.clone().subSelf(B);F=C.dot(C);B=C.dot(T);C=C.dot(V);var P=T.dot(T);T=T.dot(V);V=1/(F*P-B*B);P=(P*C-B*T)*V;F=(F*T-B*C)*V;return P>0&&F>0&&P+F<1}var c,f,g,h,j,k,m,o,t,u,
|
|
|
-w,p=b.geometry,z=p.vertices,G=[];c=0;for(f=p.faces.length;c<f;c++){g=p.faces[c];u=this.origin.clone();w=this.direction.clone();m=b.matrixWorld;h=m.multiplyVector3(z[g.a].position.clone());j=m.multiplyVector3(z[g.b].position.clone());k=m.multiplyVector3(z[g.c].position.clone());m=g instanceof THREE.Face4?m.multiplyVector3(z[g.d].position.clone()):null;o=b.matrixRotationWorld.multiplyVector3(g.normal.clone());t=w.dot(o);if(b.doubleSided||(b.flipSided?t>0:t<0)){o=o.dot((new THREE.Vector3).sub(h,u))/
|
|
|
-t;u=u.addSelf(w.multiplyScalar(o));if(g instanceof THREE.Face3){if(d(u,h,j,k)){g={distance:this.origin.distanceTo(u),point:u,face:g,object:b};G.push(g)}}else if(g instanceof THREE.Face4&&(d(u,h,j,m)||d(u,j,k,m))){g={distance:this.origin.distanceTo(u),point:u,face:g,object:b};G.push(g)}}}return G}};
|
|
|
+THREE.Ray.prototype={intersectScene:function(b){return this.intersectArray(b.objects)},intersectArray:function(b){var d,c,f,g=[];d=0;for(c=b.length;d<c;d++){f=b[d];f instanceof THREE.Mesh&&(g=g.concat(this.intersectObject(f)))}g.sort(function(h,j){return h.distance-j.distance});return g},intersectObject:function(b){function d(F,B,T,C){C=C.clone().subSelf(B);T=T.clone().subSelf(B);var V=F.clone().subSelf(B);F=C.dot(C);B=C.dot(T);C=C.dot(V);var P=T.dot(T);T=T.dot(V);V=1/(F*P-B*B);P=(P*C-B*T)*V;F=(F*
|
|
|
+T-B*C)*V;return P>0&&F>0&&P+F<1}var c,f,g,h,j,k,m,o,t,u,w,p=b.geometry,z=p.vertices,G=[];c=0;for(f=p.faces.length;c<f;c++){g=p.faces[c];u=this.origin.clone();w=this.direction.clone();m=b.matrixWorld;h=m.multiplyVector3(z[g.a].position.clone());j=m.multiplyVector3(z[g.b].position.clone());k=m.multiplyVector3(z[g.c].position.clone());m=g instanceof THREE.Face4?m.multiplyVector3(z[g.d].position.clone()):null;o=b.matrixRotationWorld.multiplyVector3(g.normal.clone());t=w.dot(o);if(b.doubleSided||(b.flipSided?
|
|
|
+t>0:t<0)){o=o.dot((new THREE.Vector3).sub(h,u))/t;u=u.addSelf(w.multiplyScalar(o));if(g instanceof THREE.Face3){if(d(u,h,j,k)){g={distance:this.origin.distanceTo(u),point:u,face:g,object:b};G.push(g)}}else if(g instanceof THREE.Face4&&(d(u,h,j,m)||d(u,j,k,m))){g={distance:this.origin.distanceTo(u),point:u,face:g,object:b};G.push(g)}}}return G}};
|
|
|
THREE.Rectangle=function(){function b(){h=f-d;j=g-c}var d,c,f,g,h,j,k=!0;this.getX=function(){return d};this.getY=function(){return c};this.getWidth=function(){return h};this.getHeight=function(){return j};this.getLeft=function(){return d};this.getTop=function(){return c};this.getRight=function(){return f};this.getBottom=function(){return g};this.set=function(m,o,t,u){k=!1;d=m;c=o;f=t;g=u;b()};this.addPoint=function(m,o){if(k){k=!1;d=m;c=o;f=m;g=o}else{d=d<m?d:m;c=c<o?c:o;f=f>m?f:m;g=g>o?g:o}b()};
|
|
|
this.add3Points=function(m,o,t,u,w,p){if(k){k=!1;d=m<t?m<w?m:w:t<w?t:w;c=o<u?o<p?o:p:u<p?u:p;f=m>t?m>w?m:w:t>w?t:w;g=o>u?o>p?o:p:u>p?u:p}else{d=m<t?m<w?m<d?m:d:w<d?w:d:t<w?t<d?t:d:w<d?w:d;c=o<u?o<p?o<c?o:c:p<c?p:c:u<p?u<c?u:c:p<c?p:c;f=m>t?m>w?m>f?m:f:w>f?w:f:t>w?t>f?t:f:w>f?w:f;g=o>u?o>p?o>g?o:g:p>g?p:g:u>p?u>g?u:g:p>g?p:g}b()};this.addRectangle=function(m){if(k){k=!1;d=m.getLeft();c=m.getTop();f=m.getRight();g=m.getBottom()}else{d=d<m.getLeft()?d:m.getLeft();c=c<m.getTop()?c:m.getTop();f=f>m.getRight()?
|
|
|
f:m.getRight();g=g>m.getBottom()?g:m.getBottom()}b()};this.inflate=function(m){d-=m;c-=m;f+=m;g+=m;b()};this.minSelf=function(m){d=d>m.getLeft()?d:m.getLeft();c=c>m.getTop()?c:m.getTop();f=f<m.getRight()?f:m.getRight();g=g<m.getBottom()?g:m.getBottom();b()};this.instersects=function(m){return Math.min(f,m.getRight())-Math.max(d,m.getLeft())>=0&&Math.min(g,m.getBottom())-Math.max(c,m.getTop())>=0};this.empty=function(){k=!0;g=f=c=d=0;b()};this.isEmpty=function(){return k}};
|