|
@@ -140,15 +140,17 @@ THREE.CurvePath.prototype.getBoundingBox = function () {
|
|
|
|
|
|
var points = this.getPoints();
|
|
|
|
|
|
- var maxX, maxY;
|
|
|
- var minX, minY;
|
|
|
+ var maxX, maxY, maxZ;
|
|
|
+ var minX, minY, minZ;
|
|
|
|
|
|
maxX = maxY = Number.NEGATIVE_INFINITY;
|
|
|
minX = minY = Number.POSITIVE_INFINITY;
|
|
|
|
|
|
var p, i, il, sum;
|
|
|
|
|
|
- sum = new THREE.Vector2();
|
|
|
+ var v3 = points[0] instanceof THREE.Vector3;
|
|
|
+
|
|
|
+ sum = v3 ? new THREE.Vector3() : new THREE.Vector2();
|
|
|
|
|
|
for ( i = 0, il = points.length; i < il; i ++ ) {
|
|
|
|
|
@@ -160,20 +162,39 @@ THREE.CurvePath.prototype.getBoundingBox = function () {
|
|
|
if ( p.y > maxY ) maxY = p.y;
|
|
|
else if ( p.y < minY ) minY = p.y;
|
|
|
|
|
|
- sum.addSelf( p.x, p.y );
|
|
|
+ if (v3) {
|
|
|
+
|
|
|
+ if ( p.z > maxZ ) maxZ = p.z;
|
|
|
+ else if ( p.z < minZ ) minZ = p.z;
|
|
|
+
|
|
|
+ sum.addSelf( p.x, p.y, p.z );
|
|
|
+
|
|
|
+ } else {
|
|
|
|
|
|
+ sum.addSelf( p.x, p.y );
|
|
|
+
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
- return {
|
|
|
+ var ret = {
|
|
|
|
|
|
minX: minX,
|
|
|
minY: minY,
|
|
|
maxX: maxX,
|
|
|
maxY: maxY,
|
|
|
centroid: sum.divideScalar( il )
|
|
|
-
|
|
|
+
|
|
|
};
|
|
|
|
|
|
+ if (v3) {
|
|
|
+
|
|
|
+ ret.maxZ = maxZ;
|
|
|
+ ret.minZ = minZ;
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ return ret;
|
|
|
+
|
|
|
};
|
|
|
|
|
|
/**************************************************************
|