提交 8821698a 编写于 作者: B Ben Houston

Improvements as a result of code review by @chandlerp

上级 38563ecb
......@@ -7,7 +7,7 @@
THREE.Box3 = function ( min, max ) {
this.min = min || new THREE.Vector3();
this.max = max || new THREE.Vector3();
this.max = max || this.min; // This is done on purpose so you can make a box using a single point and then expand it.
};
......@@ -19,6 +19,15 @@
return this;
};
THREE.Box3.prototype.copy = function ( box ) {
this.min = box.min;
this.max = box.max;
return this;
};
THREE.Box3.prototype.empty = function () {
// this is a more robust check for empty than ( volume <= 0 ) because volume can get positive with two negative axes
return
......@@ -35,13 +44,11 @@
};
THREE.Box3.prototype.center = function () {
var c = new THREE.Vector3();
return c.add( this.min, this.max ).multiplyScalar( 0.5 );
return new THREE.Vector3().add( this.min, this.max ).multiplyScalar( 0.5 );
};
THREE.Box3.prototype.size = function () {
var s = new THREE.Vector3();
return s.sub( this.max, this.min );
return new THREE.Vector3().sub( this.max, this.min );
};
THREE.Box3.prototype.extendByPoint = function ( point ) {
......@@ -74,12 +81,8 @@
};
THREE.Box3.prototype.expandByScalar = function ( scalar ) {
this.min.x -= scalar;
this.min.y -= scalar;
this.min.z -= scalar;
this.max.x += scalar;
this.max.y += scalar;
this.max.z += scalar;
this.min.addScalar( -scalar );
this.max.addScalar( scalar );
return this;
};
......
......@@ -31,6 +31,14 @@
return this;
};
THREE.Plane.prototype.copy = function ( plane ) {
this.normal = plane.normal;
this.constant = plane.constant;
return this;
};
THREE.Plane.prototype.flip = function () {
// Note: can also be flipped by inverting constant, but I like constant to stay positive generally.
......@@ -58,7 +66,7 @@
var perpendicularMagnitude = this.distanceToPoint( point );
return new THREE.Vector3(
return new THREE.Vector3(
point.x - this.normal.x * perpendicularMagnitude,
point.y - this.normal.y * perpendicularMagnitude,
point.z - this.normal.z * perpendicularMagnitude
......@@ -69,11 +77,7 @@
var perpendicularMagnitude = this.distanceToPoint( point );
return new THREE.Vector3(
this.normal.x * perpendicularMagnitude,
this.normal.y * perpendicularMagnitude,
this.normal.z * perpendicularMagnitude
);
return new THREE.Vector3().copy( this.normal ).multipleByScalar( perpendicularMagnitude );
};
THREE.Plane.prototype.intersectsLine = function ( startPoint, endPoint ) {
......@@ -87,7 +91,7 @@
THREE.Plane.prototype.coplanarPoint = function () {
return this.projectPoint( new THREE.Vector3( 0,0,0 ) );
return this.projectPoint( new THREE.Vector3( 0, 0, 0 ) );
};
}( THREE ) );
......@@ -19,6 +19,15 @@
return this;
};
THREE.Sphere.prototype.copy = function ( sphere ) {
this.center = sphere.center;
this.radius = sphere.radius;
return this;
};
THREE.Sphere.prototype.empty = function () {
return ( this.radius <= 0 );
......@@ -28,33 +37,29 @@
THREE.Sphere.prototype.volume = function () {
// NOTE: would love to replace r*r*r with a helper cube(r), but may be much slower
return Math.PI * 4 / 3 * this.radius * this.radius * this.radius;
};
THREE.Sphere.prototype.containsPoint = function ( point ) {
var delta = new THREE.VEctor3();
var distanceSq = delta.sub( point, this.center ).lengthSq();
var distanceSq = new THREE.VEctor3().sub( point, this.center ).lengthSq();
return ( distanceSq <= this.radius * this.radius );
};
THREE.Sphere.prototype.distanceToPoint = function ( point ) {
var delta = new THREE.VEctor3();
var distanceSq = delta.sub( point, this.center ).length();
var distanceSq = new THREE.Vector3().sub( point, this.center ).length();
return ( distanceSq - this.radius );
return ( distanceSq - this.radius );
};
THREE.Sphere.prototype.clampPoint = function ( point ) {
// NOTE: There is likely a more optimal way of doing this.
var delta = new THREE.VEctor3();
delta.sub( point, this.center );
var delta = new THREE.Vector3().sub( point, this.center );
var deltaLengthSq = delta.lengthSq();
......@@ -70,7 +75,7 @@
THREE.Sphere.prototype.bounds = function () {
var box = new THREE.Box3( this.center );
var box = new THREE.Box3( this.center, this.center );
box.expandByScalar( this.radius );
return box;
......@@ -78,7 +83,7 @@
THREE.Sphere.prototype.translate = function ( offset ) {
this.center.add( this.center, this.offset );
this.center.addSelf( this.offset );
return this;
};
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册