|
@@ -11,7 +11,6 @@
|
|
|
THREE.CurvePath = function () {
|
|
|
|
|
|
this.curves = [];
|
|
|
- this.bends = [];
|
|
|
|
|
|
this.autoClose = false; // Automatically closes the path
|
|
|
|
|
@@ -139,63 +138,6 @@ THREE.CurvePath.prototype.getCurveLengths = function() {
|
|
|
|
|
|
|
|
|
|
|
|
-// Returns min and max coordinates
|
|
|
-
|
|
|
-THREE.CurvePath.prototype.getBoundingBox = function () {
|
|
|
-
|
|
|
- var points = this.getPoints();
|
|
|
-
|
|
|
- var maxX, maxY, maxZ;
|
|
|
- var minX, minY, minZ;
|
|
|
-
|
|
|
- maxX = maxY = Number.NEGATIVE_INFINITY;
|
|
|
- minX = minY = Number.POSITIVE_INFINITY;
|
|
|
-
|
|
|
- var v3 = points[ 0 ] instanceof THREE.Vector3;
|
|
|
-
|
|
|
- var sum = v3 ? new THREE.Vector3() : new THREE.Vector2();
|
|
|
-
|
|
|
- for ( var i = 0, l = points.length; i < l; i ++ ) {
|
|
|
-
|
|
|
- var p = points[ i ];
|
|
|
-
|
|
|
- if ( p.x > maxX ) maxX = p.x;
|
|
|
- else if ( p.x < minX ) minX = p.x;
|
|
|
-
|
|
|
- if ( p.y > maxY ) maxY = p.y;
|
|
|
- else if ( p.y < minY ) minY = p.y;
|
|
|
-
|
|
|
- if ( v3 ) {
|
|
|
-
|
|
|
- if ( p.z > maxZ ) maxZ = p.z;
|
|
|
- else if ( p.z < minZ ) minZ = p.z;
|
|
|
-
|
|
|
- }
|
|
|
-
|
|
|
- sum.add( p );
|
|
|
-
|
|
|
- }
|
|
|
-
|
|
|
- var ret = {
|
|
|
-
|
|
|
- minX: minX,
|
|
|
- minY: minY,
|
|
|
- maxX: maxX,
|
|
|
- maxY: maxY
|
|
|
-
|
|
|
- };
|
|
|
-
|
|
|
- if ( v3 ) {
|
|
|
-
|
|
|
- ret.maxZ = maxZ;
|
|
|
- ret.minZ = minZ;
|
|
|
-
|
|
|
- }
|
|
|
-
|
|
|
- return ret;
|
|
|
-
|
|
|
-};
|
|
|
-
|
|
|
/**************************************************************
|
|
|
* Create Geometries Helpers
|
|
|
**************************************************************/
|
|
@@ -232,92 +174,3 @@ THREE.CurvePath.prototype.createGeometry = function( points ) {
|
|
|
return geometry;
|
|
|
|
|
|
};
|
|
|
-
|
|
|
-
|
|
|
-/**************************************************************
|
|
|
- * Bend / Wrap Helper Methods
|
|
|
- **************************************************************/
|
|
|
-
|
|
|
-// Wrap path / Bend modifiers?
|
|
|
-
|
|
|
-THREE.CurvePath.prototype.addWrapPath = function ( bendpath ) {
|
|
|
-
|
|
|
- this.bends.push( bendpath );
|
|
|
-
|
|
|
-};
|
|
|
-
|
|
|
-THREE.CurvePath.prototype.getTransformedPoints = function( segments, bends ) {
|
|
|
-
|
|
|
- var oldPts = this.getPoints( segments ); // getPoints getSpacedPoints
|
|
|
-
|
|
|
- if ( ! bends ) {
|
|
|
-
|
|
|
- bends = this.bends;
|
|
|
-
|
|
|
- }
|
|
|
-
|
|
|
- for ( var i = 0, l = bends.length; i < l; i ++ ) {
|
|
|
-
|
|
|
- oldPts = this.getWrapPoints( oldPts, bends[ i ] );
|
|
|
-
|
|
|
- }
|
|
|
-
|
|
|
- return oldPts;
|
|
|
-
|
|
|
-};
|
|
|
-
|
|
|
-THREE.CurvePath.prototype.getTransformedSpacedPoints = function( segments, bends ) {
|
|
|
-
|
|
|
- var oldPts = this.getSpacedPoints( segments );
|
|
|
-
|
|
|
- if ( ! bends ) {
|
|
|
-
|
|
|
- bends = this.bends;
|
|
|
-
|
|
|
- }
|
|
|
-
|
|
|
- for ( var i = 0, l = bends.length; i < l; i ++ ) {
|
|
|
-
|
|
|
- oldPts = this.getWrapPoints( oldPts, bends[ i ] );
|
|
|
-
|
|
|
- }
|
|
|
-
|
|
|
- return oldPts;
|
|
|
-
|
|
|
-};
|
|
|
-
|
|
|
-// This returns getPoints() bend/wrapped around the contour of a path.
|
|
|
-// Read http://www.planetclegg.com/projects/WarpingTextToSplines.html
|
|
|
-
|
|
|
-THREE.CurvePath.prototype.getWrapPoints = function ( oldPts, path ) {
|
|
|
-
|
|
|
- var bounds = this.getBoundingBox();
|
|
|
-
|
|
|
- for ( var i = 0, l = oldPts.length; i < l; i ++ ) {
|
|
|
-
|
|
|
- var p = oldPts[ i ];
|
|
|
-
|
|
|
- var oldX = p.x;
|
|
|
- var oldY = p.y;
|
|
|
-
|
|
|
- var xNorm = oldX / bounds.maxX;
|
|
|
-
|
|
|
- // If using actual distance, for length > path, requires line extrusions
|
|
|
- //xNorm = path.getUtoTmapping(xNorm, oldX); // 3 styles. 1) wrap stretched. 2) wrap stretch by arc length 3) warp by actual distance
|
|
|
-
|
|
|
- xNorm = path.getUtoTmapping( xNorm, oldX );
|
|
|
-
|
|
|
- // check for out of bounds?
|
|
|
-
|
|
|
- var pathPt = path.getPoint( xNorm );
|
|
|
- var normal = path.getTangent( xNorm );
|
|
|
- normal.set( - normal.y, normal.x ).multiplyScalar( oldY );
|
|
|
-
|
|
|
- p.x = pathPt.x + normal.x;
|
|
|
- p.y = pathPt.y + normal.y;
|
|
|
-
|
|
|
- }
|
|
|
-
|
|
|
- return oldPts;
|
|
|
-
|
|
|
-};
|