提交 a2a059c6 编写于 作者: M Mr.doob

Updated builds.

上级 df9c38f0
......@@ -28,6 +28,23 @@ if ( Math.sign === undefined ) {
}
if ( Function.prototype.name === undefined && Object.defineProperty !== undefined ) {
// Missing in IE9-11.
// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/name
Object.defineProperty( Function.prototype, 'name', {
get: function () {
return this.toString().match(/^\s*function\s*(\S*)\s*\(/)[1];
}
} );
}
// https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent.button
THREE.MOUSE = { LEFT: 0, MIDDLE: 1, RIGHT: 2 };
......@@ -305,39 +322,46 @@ THREE.Color.prototype = {
},
setHSL: function ( h, s, l ) {
setHSL: function () {
// h,s,l ranges are in 0.0 - 1.0
function hue2rgb ( p, q, t ) {
if ( s === 0 ) {
if ( t < 0 ) t += 1;
if ( t > 1 ) t -= 1;
if ( t < 1 / 6 ) return p + ( q - p ) * 6 * t;
if ( t < 1 / 2 ) return q;
if ( t < 2 / 3 ) return p + ( q - p ) * 6 * ( 2 / 3 - t );
return p;
this.r = this.g = this.b = l;
};
} else {
return function ( h, s, l ) {
var hue2rgb = function ( p, q, t ) {
// h,s,l ranges are in 0.0 - 1.0
h = THREE.Math.euclideanModulo( h, 1 );
s = THREE.Math.clamp( s, 0, 1 );
l = THREE.Math.clamp( l, 0, 1 );
if ( t < 0 ) t += 1;
if ( t > 1 ) t -= 1;
if ( t < 1 / 6 ) return p + ( q - p ) * 6 * t;
if ( t < 1 / 2 ) return q;
if ( t < 2 / 3 ) return p + ( q - p ) * 6 * ( 2 / 3 - t );
return p;
if ( s === 0 ) {
};
this.r = this.g = this.b = l;
var p = l <= 0.5 ? l * ( 1 + s ) : l + s - ( l * s );
var q = ( 2 * l ) - p;
} else {
this.r = hue2rgb( q, p, h + 1 / 3 );
this.g = hue2rgb( q, p, h );
this.b = hue2rgb( q, p, h - 1 / 3 );
var p = l <= 0.5 ? l * ( 1 + s ) : l + s - ( l * s );
var q = ( 2 * l ) - p;
}
this.r = hue2rgb( q, p, h + 1 / 3 );
this.g = hue2rgb( q, p, h );
this.b = hue2rgb( q, p, h - 1 / 3 );
return this;
}
},
return this;
};
}(),
setStyle: function ( style ) {
......@@ -5618,7 +5642,13 @@ THREE.Ray.prototype = {
},
distanceToPoint: function () {
distanceToPoint: function ( point ) {
return Math.sqrt( this.distanceSqToPoint( point ) );
},
distanceSqToPoint: function () {
var v1 = new THREE.Vector3();
......@@ -5630,13 +5660,13 @@ THREE.Ray.prototype = {
if ( directionDistance < 0 ) {
return this.origin.distanceTo( point );
return this.origin.distanceToSquared( point );
}
v1.copy( this.direction ).multiplyScalar( directionDistance ).add( this.origin );
return v1.distanceTo( point );
return v1.distanceToSquared( point );
};
......@@ -6692,6 +6722,15 @@ THREE.Math = {
},
// compute euclidian modulo of m % n
// https://en.wikipedia.org/wiki/Modulo_operation
euclideanModulo: function ( n, m ) {
return ( ( n % m ) + m ) % m;
},
// Linear mapping from range <a1, a2> to range <b1, b2>
mapLinear: function ( x, a1, a2, b1, b2 ) {
......@@ -16167,13 +16206,14 @@ THREE.PointCloud.prototype.raycast = ( function () {
}
var localThreshold = threshold / ( ( this.scale.x + this.scale.y + this.scale.z ) / 3 );
var localThresholdSq = localThreshold * localThreshold;
var position = new THREE.Vector3();
var testPoint = function ( point, index ) {
var rayPointDistance = ray.distanceToPoint( point );
var rayPointDistanceSq = ray.distanceSqToPoint( point );
if ( rayPointDistance < localThreshold ) {
if ( rayPointDistanceSq < localThresholdSq ) {
var intersectPoint = ray.closestPointToPoint( point );
intersectPoint.applyMatrix4( object.matrixWorld );
......@@ -16185,7 +16225,7 @@ THREE.PointCloud.prototype.raycast = ( function () {
intersects.push( {
distance: distance,
distanceToRay: rayPointDistance,
distanceToRay: Math.sqrt( rayPointDistanceSq ),
point: intersectPoint.clone(),
index: index,
face: null,
......@@ -17694,9 +17734,10 @@ THREE.Sprite.prototype.raycast = ( function () {
matrixPosition.setFromMatrixPosition( this.matrixWorld );
var distance = raycaster.ray.distanceToPoint( matrixPosition );
if ( distance > this.scale.x ) {
var distanceSq = raycaster.ray.distanceSqToPoint( matrixPosition );
var guessSizeSq = this.scale.x * this.scale.y;
if ( distanceSq > guessSizeSq ) {
return;
......@@ -17704,7 +17745,7 @@ THREE.Sprite.prototype.raycast = ( function () {
intersects.push( {
distance: distance,
distance: Math.sqrt( distanceSq ),
point: this.position,
face: null,
object: this
......
因为 它太大了无法显示 source diff 。你可以改为 查看blob
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册