|
@@ -3,7 +3,7 @@
|
|
|
* based on http://code.google.com/p/away3d/source/browse/trunk/fp10/Away3D/src/away3d/primitives/TorusKnot.as?spec=svn2473&r=2473
|
|
|
*/
|
|
|
|
|
|
-THREE.TorusKnotGeometry = function ( radius, tube, segmentsR, segmentsT, p, q, heightScale ) {
|
|
|
+THREE.TorusKnotGeometry = function ( radius, tube, radialSegments, tubularSegments, p, q, heightScale ) {
|
|
|
|
|
|
THREE.Geometry.call( this );
|
|
|
|
|
@@ -11,25 +11,25 @@ THREE.TorusKnotGeometry = function ( radius, tube, segmentsR, segmentsT, p, q, h
|
|
|
|
|
|
this.radius = radius || 200;
|
|
|
this.tube = tube || 40;
|
|
|
- this.segmentsR = segmentsR || 64;
|
|
|
- this.segmentsT = segmentsT || 8;
|
|
|
+ this.radialSegments = radialSegments || 64;
|
|
|
+ this.tubularSegments = tubularSegments || 8;
|
|
|
this.p = p || 2;
|
|
|
this.q = q || 3;
|
|
|
this.heightScale = heightScale || 1;
|
|
|
- this.grid = new Array(this.segmentsR);
|
|
|
+ this.grid = new Array(this.radialSegments);
|
|
|
|
|
|
var tang = new THREE.Vector3();
|
|
|
var n = new THREE.Vector3();
|
|
|
var bitan = new THREE.Vector3();
|
|
|
|
|
|
- for ( var i = 0; i < this.segmentsR; ++ i ) {
|
|
|
+ for ( var i = 0; i < this.radialSegments; ++ i ) {
|
|
|
|
|
|
- this.grid[ i ] = new Array( this.segmentsT );
|
|
|
+ this.grid[ i ] = new Array( this.tubularSegments );
|
|
|
|
|
|
- for ( var j = 0; j < this.segmentsT; ++ j ) {
|
|
|
+ for ( var j = 0; j < this.tubularSegments; ++ j ) {
|
|
|
|
|
|
- var u = i / this.segmentsR * 2 * this.p * Math.PI;
|
|
|
- var v = j / this.segmentsT * 2 * Math.PI;
|
|
|
+ var u = i / this.radialSegments * 2 * this.p * Math.PI;
|
|
|
+ var v = j / this.tubularSegments * 2 * Math.PI;
|
|
|
var p1 = getPos( u, v, this.q, this.p, this.radius, this.heightScale );
|
|
|
var p2 = getPos( u + 0.01, v, this.q, this.p, this.radius, this.heightScale );
|
|
|
var cx, cy;
|
|
@@ -55,22 +55,22 @@ THREE.TorusKnotGeometry = function ( radius, tube, segmentsR, segmentsT, p, q, h
|
|
|
|
|
|
}
|
|
|
|
|
|
- for ( var i = 0; i < this.segmentsR; ++ i ) {
|
|
|
+ for ( var i = 0; i < this.radialSegments; ++ i ) {
|
|
|
|
|
|
- for ( var j = 0; j < this.segmentsT; ++ j ) {
|
|
|
+ for ( var j = 0; j < this.tubularSegments; ++ j ) {
|
|
|
|
|
|
- var ip = ( i + 1 ) % this.segmentsR;
|
|
|
- var jp = ( j + 1 ) % this.segmentsT;
|
|
|
+ var ip = ( i + 1 ) % this.radialSegments;
|
|
|
+ var jp = ( j + 1 ) % this.tubularSegments;
|
|
|
|
|
|
var a = this.grid[ i ][ j ];
|
|
|
var b = this.grid[ ip ][ j ];
|
|
|
var c = this.grid[ ip ][ jp ];
|
|
|
var d = this.grid[ i ][ jp ];
|
|
|
|
|
|
- var uva = new THREE.UV( i / this.segmentsR, j / this.segmentsT );
|
|
|
- var uvb = new THREE.UV( ( i + 1 ) / this.segmentsR, j / this.segmentsT );
|
|
|
- var uvc = new THREE.UV( ( i + 1 ) / this.segmentsR, ( j + 1 ) / this.segmentsT );
|
|
|
- var uvd = new THREE.UV( i / this.segmentsR, ( j + 1 ) / this.segmentsT );
|
|
|
+ var uva = new THREE.UV( i / this.radialSegments, j / this.tubularSegments );
|
|
|
+ var uvb = new THREE.UV( ( i + 1 ) / this.radialSegments, j / this.tubularSegments );
|
|
|
+ var uvc = new THREE.UV( ( i + 1 ) / this.radialSegments, ( j + 1 ) / this.tubularSegments );
|
|
|
+ var uvd = new THREE.UV( i / this.radialSegments, ( j + 1 ) / this.tubularSegments );
|
|
|
|
|
|
this.faces.push( new THREE.Face4( a, b, c, d ) );
|
|
|
this.faceVertexUvs[ 0 ].push( [ uva,uvb,uvc, uvd ] );
|