diff --git a/docs/api/extras/geometries/TorusKnotBufferGeometry.html b/docs/api/extras/geometries/TorusKnotBufferGeometry.html
index 292536bcd41fca..6b6223261958b3 100644
--- a/docs/api/extras/geometries/TorusKnotBufferGeometry.html
+++ b/docs/api/extras/geometries/TorusKnotBufferGeometry.html
@@ -29,17 +29,15 @@
Example
Constructor
- [name]([page:Float radius], [page:Float tube], [page:Integer radialSegments], [page:Integer tubularSegments], [page:Integer p], [page:Integer q], [page:Float heightScale], [page:Float arc])
+ [name]([page:Float radius], [page:Float tube], [page:Integer tubularSegments], [page:Integer radialSegments], [page:Integer p], [page:Integer q])
- radius — Default is 100.
- tube — Diameter of the tube. Default is 40.
- - radialSegments — Default is 64.
- - tubularSegments — Default is 8.
+ - tubularSegments — Default is 64.
+ - radialSegments — Default is 8.
- p — This value determines, how many times the geometry winds around its axis of rotational symmetry. Default is 2.
- q — This value determines, how many times the geometry winds around a circle in the interior of the torus. Default is 3.
- - heightScale — Default is 1.
- - arc — Central angle. Default is Math.PI * 2.
diff --git a/docs/api/extras/geometries/TorusKnotGeometry.html b/docs/api/extras/geometries/TorusKnotGeometry.html
index be2878328aa9f8..2b7ba58b514a1f 100644
--- a/docs/api/extras/geometries/TorusKnotGeometry.html
+++ b/docs/api/extras/geometries/TorusKnotGeometry.html
@@ -29,17 +29,15 @@ Example
Constructor
- [name]([page:Float radius], [page:Float tube], [page:Integer radialSegments], [page:Integer tubularSegments], [page:Integer p], [page:Integer q], [page:Float heightScale], [page:Float arc])
+ [name]([page:Float radius], [page:Float tube], [page:Integer tubularSegments], [page:Integer radialSegments], [page:Integer p], [page:Integer q])
- radius — Default is 100.
- tube — Diameter of the tube. Default is 40.
- - radialSegments — Default is 64.
- - tubularSegments — Default is 8.
+ - tubularSegments — Default is 64.
+ - radialSegments — Default is 8.
- p — This value determines, how many times the geometry winds around its axis of rotational symmetry. Default is 2.
- q — This value determines, how many times the geometry winds around a circle in the interior of the torus. Default is 3.
- - heightScale — Default is 1.
- - arc — Central angle. Default is Math.PI * 2.
diff --git a/docs/scenes/js/geometry.js b/docs/scenes/js/geometry.js
index fd34e508db53a9..ae6a6cdcd5bff2 100644
--- a/docs/scenes/js/geometry.js
+++ b/docs/scenes/js/geometry.js
@@ -752,20 +752,18 @@ var guis = {
var data = {
radius : 10,
tube : 3,
- radialSegments : 64,
- tubularSegments : 8,
+ tubularSegments : 64,
+ radialSegments : 8,
p : 2,
- q : 3,
- heightScale : 1,
- arc : twoPi
+ q : 3
};
function generateGeometry() {
updateGroupGeometry( mesh,
new THREE.TorusKnotBufferGeometry(
- data.radius, data.tube, data.radialSegments, data.tubularSegments,
- data.p, data.q, data.heightScale, data.arc
+ data.radius, data.tube, data.tubularSegments, data.radialSegments,
+ data.p, data.q
)
);
@@ -775,12 +773,10 @@ var guis = {
folder.add( data, 'radius', 1, 20 ).onChange( generateGeometry );
folder.add( data, 'tube', 0.1, 10 ).onChange( generateGeometry );
- folder.add( data, 'radialSegments', 3, 300 ).step( 1 ).onChange( generateGeometry );
- folder.add( data, 'tubularSegments', 3, 20 ).step( 1 ).onChange( generateGeometry );
+ folder.add( data, 'tubularSegments', 3, 300 ).step( 1 ).onChange( generateGeometry );
+ folder.add( data, 'radialSegments', 3, 20 ).step( 1 ).onChange( generateGeometry );
folder.add( data, 'p', 1, 20 ).step( 1 ).onChange( generateGeometry );
folder.add( data, 'q', 1, 20 ).step( 1 ).onChange( generateGeometry );
- folder.add( data, 'heightScale', 1, 20 ).onChange( generateGeometry );
- folder.add( data, 'arc', 0.1, twoPi ).onChange( generateGeometry );
generateGeometry();
@@ -791,20 +787,18 @@ var guis = {
var data = {
radius : 10,
tube : 3,
- radialSegments : 64,
- tubularSegments : 8,
+ tubularSegments : 64,
+ radialSegments : 8,
p : 2,
- q : 3,
- heightScale : 1,
- arc : twoPi
+ q : 3
};
function generateGeometry() {
updateGroupGeometry( mesh,
new THREE.TorusKnotGeometry(
- data.radius, data.tube, data.radialSegments, data.tubularSegments,
- data.p, data.q, data.heightScale, data.arc
+ data.radius, data.tube, data.tubularSegments, data.radialSegments,
+ data.p, data.q
)
);
@@ -814,12 +808,10 @@ var guis = {
folder.add( data, 'radius', 1, 20 ).onChange( generateGeometry );
folder.add( data, 'tube', 0.1, 10 ).onChange( generateGeometry );
- folder.add( data, 'radialSegments', 3, 300 ).step( 1 ).onChange( generateGeometry );
- folder.add( data, 'tubularSegments', 3, 20 ).step( 1 ).onChange( generateGeometry );
+ folder.add( data, 'tubularSegments', 3, 300 ).step( 1 ).onChange( generateGeometry );
+ folder.add( data, 'radialSegments', 3, 20 ).step( 1 ).onChange( generateGeometry );
folder.add( data, 'p', 1, 20 ).step( 1 ).onChange( generateGeometry );
folder.add( data, 'q', 1, 20 ).step( 1 ).onChange( generateGeometry );
- folder.add( data, 'heightScale', 1, 20 ).onChange( generateGeometry );
- folder.add( data, 'arc', 0.1, twoPi ).onChange( generateGeometry );
generateGeometry();
diff --git a/editor/js/Menubar.Add.js b/editor/js/Menubar.Add.js
index a1f7d728967d81..3baef98c2aac8d 100644
--- a/editor/js/Menubar.Add.js
+++ b/editor/js/Menubar.Add.js
@@ -198,13 +198,12 @@ Menubar.Add = function ( editor ) {
var radius = 2;
var tube = 0.8;
- var radialSegments = 64;
- var tubularSegments = 12;
+ var tubularSegments = 64;
+ var radialSegments = 12;
var p = 2;
var q = 3;
- var heightScale = 1;
- var geometry = new THREE.TorusKnotGeometry( radius, tube, radialSegments, tubularSegments, p, q, heightScale );
+ var geometry = new THREE.TorusKnotGeometry( radius, tube, tubularSegments, radialSegments, p, q );
var mesh = new THREE.Mesh( geometry, new THREE.MeshStandardMaterial() );
mesh.name = 'TorusKnot ' + ( ++ meshCount );
diff --git a/editor/js/Sidebar.Geometry.TorusKnotGeometry.js b/editor/js/Sidebar.Geometry.TorusKnotGeometry.js
index 1e6f274ebf4714..15e5956a28018b 100644
--- a/editor/js/Sidebar.Geometry.TorusKnotGeometry.js
+++ b/editor/js/Sidebar.Geometry.TorusKnotGeometry.js
@@ -30,16 +30,6 @@ Sidebar.Geometry.TorusKnotGeometry = function ( editor, object ) {
container.add( tubeRow );
- // radialSegments
-
- var radialSegmentsRow = new UI.Row();
- var radialSegments = new UI.Integer( parameters.radialSegments ).setRange( 1, Infinity ).onChange( update );
-
- radialSegmentsRow.add( new UI.Text( 'Radial segments' ).setWidth( '90px' ) );
- radialSegmentsRow.add( radialSegments );
-
- container.add( radialSegmentsRow );
-
// tubularSegments
var tubularSegmentsRow = new UI.Row();
@@ -50,6 +40,16 @@ Sidebar.Geometry.TorusKnotGeometry = function ( editor, object ) {
container.add( tubularSegmentsRow );
+ // radialSegments
+
+ var radialSegmentsRow = new UI.Row();
+ var radialSegments = new UI.Integer( parameters.radialSegments ).setRange( 1, Infinity ).onChange( update );
+
+ radialSegmentsRow.add( new UI.Text( 'Radial segments' ).setWidth( '90px' ) );
+ radialSegmentsRow.add( radialSegments );
+
+ container.add( radialSegmentsRow );
+
// p
var pRow = new UI.Row();
@@ -70,16 +70,6 @@ Sidebar.Geometry.TorusKnotGeometry = function ( editor, object ) {
container.add( qRow );
- // heightScale
-
- var heightScaleRow = new UI.Row();
- var heightScale = new UI.Number( parameters.heightScale ).onChange( update );
-
- pRow.add( new UI.Text( 'Height scale' ).setWidth( '90px' ) );
- pRow.add( heightScale );
-
- container.add( heightScaleRow );
-
//
@@ -88,11 +78,10 @@ Sidebar.Geometry.TorusKnotGeometry = function ( editor, object ) {
editor.execute( new SetGeometryCommand( object, new THREE.TorusKnotGeometry(
radius.getValue(),
tube.getValue(),
- radialSegments.getValue(),
tubularSegments.getValue(),
+ radialSegments.getValue(),
p.getValue(),
- q.getValue(),
- heightScale.getValue()
+ q.getValue()
) ) );
}
diff --git a/examples/js/ParametricGeometries.js b/examples/js/ParametricGeometries.js
index dd477414adb22e..050d9a89522180 100644
--- a/examples/js/ParametricGeometries.js
+++ b/examples/js/ParametricGeometries.js
@@ -170,18 +170,16 @@ THREE.ParametricGeometries.TubeGeometry.prototype.constructor = THREE.Parametric
* Parametric Replacement for TorusKnotGeometry
*
*********************************************/
-THREE.ParametricGeometries.TorusKnotGeometry = function ( radius, tube, segmentsR, segmentsT, p, q, heightScale ) {
+THREE.ParametricGeometries.TorusKnotGeometry = function ( radius, tube, segmentsT, segmentsR, p, q ) {
var scope = this;
this.radius = radius || 200;
this.tube = tube || 40;
- this.segmentsR = segmentsR || 64;
- this.segmentsT = segmentsT || 8;
+ this.segmentsT = segmentsT || 64;
+ this.segmentsR = segmentsR || 8;
this.p = p || 2;
this.q = q || 3;
- this.heightScale = heightScale || 1;
-
var TorusKnotCurve = THREE.Curve.create(
@@ -198,13 +196,13 @@ THREE.ParametricGeometries.TorusKnotGeometry = function ( radius, tube, segments
ty = ( 1 + r * Math.cos( q * t ) ) * Math.sin( p * t ),
tz = r * Math.sin( q * t );
- return new THREE.Vector3( tx, ty * heightScale, tz ).multiplyScalar( radius );
+ return new THREE.Vector3( tx, ty, tz ).multiplyScalar( radius );
}
);
- var segments = segmentsR;
- var radiusSegments = segmentsT;
+ var segments = segmentsT;
+ var radiusSegments = segmentsR;
var extrudePath = new TorusKnotCurve();
THREE.ParametricGeometries.TubeGeometry.call( this, extrudePath, segments, tube, radiusSegments, true, false );
diff --git a/examples/webgl_geometries2.html b/examples/webgl_geometries2.html
index e1f670088628a2..cac44d483f85ee 100644
--- a/examples/webgl_geometries2.html
+++ b/examples/webgl_geometries2.html
@@ -63,19 +63,17 @@
new THREE.MeshBasicMaterial( { color: 0xffffff, wireframe: true, transparent: true, opacity: 0.1, side: THREE.DoubleSide } )
];
-
- var heightScale = 1;
var p = 2;
var q = 3;
- var radius = 150, tube = 10, segmentsR = 50, segmentsT = 20;
+ var radius = 150, tube = 10, segmentsT = 50, segmentsR = 20;
var GrannyKnot = new THREE.Curves.GrannyKnot();
- var torus2 = new THREE.ParametricGeometries.TorusKnotGeometry( radius, tube, segmentsR, segmentsT, p , q, heightScale );
+ var torus2 = new THREE.ParametricGeometries.TorusKnotGeometry( radius, tube, segmentsT, segmentsR, p , q );
var sphere2 = new THREE.ParametricGeometries.SphereGeometry( 75, 20, 10 );
var tube2 = new THREE.ParametricGeometries.TubeGeometry( GrannyKnot, 150, 2, 8, true, false );
- // var torus = new THREE.TorusKnotGeometry( radius, tube, segmentsR, segmentsT, p , q, heightScale );
+ // var torus = new THREE.TorusKnotGeometry( radius, tube, segmentsR, segmentsT, p , q );
// var sphere = new THREE.SphereGeometry( 75, 20, 10 );
// var tube = new THREE.TubeGeometry( GrannyKnot, 150, 2, 8, true, false );
diff --git a/src/extras/geometries/TorusKnotBufferGeometry.js b/src/extras/geometries/TorusKnotBufferGeometry.js
index 1becf230fd0800..e63ae225bdc056 100644
--- a/src/extras/geometries/TorusKnotBufferGeometry.js
+++ b/src/extras/geometries/TorusKnotBufferGeometry.js
@@ -3,7 +3,7 @@
*
* see: http://www.blackpawn.com/texts/pqtorus/
*/
-THREE.TorusKnotBufferGeometry = function ( radius, tube, radialSegments, tubularSegments, p, q, heightScale, arc ) {
+THREE.TorusKnotBufferGeometry = function ( radius, tube, tubularSegments, radialSegments, p, q, heightScale ) {
THREE.BufferGeometry.call( this );
@@ -12,22 +12,20 @@ THREE.TorusKnotBufferGeometry = function ( radius, tube, radialSegments, tubular
this.parameters = {
radius: radius,
tube: tube,
- radialSegments: radialSegments,
tubularSegments: tubularSegments,
+ radialSegments: radialSegments,
p: p,
- q: q,
- heightScale: heightScale,
- arc: arc
+ q: q
};
+ if( heightScale !== undefined ) console.warn( 'THREE.TorusKnotGeometry: heightScale has been deprecated. Use .scale( x, y, z ) instead.' );
+
radius = radius || 100;
tube = tube || 40;
- radialSegments = Math.floor( radialSegments ) || 64;
- tubularSegments = Math.floor( tubularSegments ) || 6;
+ tubularSegments = Math.floor( tubularSegments ) || 64;
+ radialSegments = Math.floor( radialSegments ) || 8;
p = p || 2;
q = q || 3;
- heightScale = heightScale || 1;
- arc = arc || Math.PI * 2;
// used to calculate buffer length
var vertexCount = ( ( radialSegments + 1 ) * ( tubularSegments + 1 ) );
@@ -55,17 +53,17 @@ THREE.TorusKnotBufferGeometry = function ( radius, tube, radialSegments, tubular
// generate vertices, normals and uvs
- for ( i = 0; i <= radialSegments; ++ i ) {
+ for ( i = 0; i <= tubularSegments; ++ i ) {
- // the radian "u" is used to calculate the position on the torus curve of the current radial segement
+ // the radian "u" is used to calculate the position on the torus curve of the current tubular segement
- var u = i / radialSegments * p * arc;
+ var u = i / tubularSegments * p * Math.PI * 2;
// now we calculate two points. P1 is our current position on the curve, P2 is a little farther ahead.
// these points are used to create a special "coordinate space", which is necessary to calculate the correct vertex positions
- calculatePositionOnCurve( u, p, q, radius, heightScale, P1 );
- calculatePositionOnCurve( u + 0.01, p, q, radius, heightScale, P2 );
+ calculatePositionOnCurve( u, p, q, radius, P1 );
+ calculatePositionOnCurve( u + 0.01, p, q, radius, P2 );
// calculate orthonormal basis
@@ -79,12 +77,12 @@ THREE.TorusKnotBufferGeometry = function ( radius, tube, radialSegments, tubular
B.normalize();
N.normalize();
- for ( j = 0; j <= tubularSegments; ++ j ) {
+ for ( j = 0; j <= radialSegments; ++ j ) {
// now calculate the vertices. they are nothing more than an extrusion of the torus curve.
// because we extrude a shape in the xy-plane, there is no need to calculate a z-value.
- var v = j / tubularSegments * Math.PI * 2;
+ var v = j / radialSegments * Math.PI * 2;
var cx = - tube * Math.cos( v );
var cy = tube * Math.sin( v );
@@ -103,8 +101,8 @@ THREE.TorusKnotBufferGeometry = function ( radius, tube, radialSegments, tubular
normals.setXYZ( index, normal.x, normal.y, normal.z );
// uv
- uv.x = i / radialSegments;
- uv.y = j / tubularSegments;
+ uv.x = i / tubularSegments;
+ uv.y = j / radialSegments;
uvs.setXY( index, uv.x, uv.y );
// increase index
@@ -116,15 +114,15 @@ THREE.TorusKnotBufferGeometry = function ( radius, tube, radialSegments, tubular
// generate indices
- for ( j = 1; j <= radialSegments; j ++ ) {
+ for ( j = 1; j <= tubularSegments; j ++ ) {
- for ( i = 1; i <= tubularSegments; i ++ ) {
+ for ( i = 1; i <= radialSegments; i ++ ) {
// indices
- var a = ( tubularSegments + 1 ) * ( j - 1 ) + ( i - 1 );
- var b = ( tubularSegments + 1 ) * j + ( i - 1 );
- var c = ( tubularSegments + 1 ) * j + i;
- var d = ( tubularSegments + 1 ) * ( j - 1 ) + i;
+ var a = ( radialSegments + 1 ) * ( j - 1 ) + ( i - 1 );
+ var b = ( radialSegments + 1 ) * j + ( i - 1 );
+ var c = ( radialSegments + 1 ) * j + i;
+ var d = ( radialSegments + 1 ) * ( j - 1 ) + i;
// face one
indices.setX( indexOffset, a ); indexOffset++;
@@ -149,7 +147,7 @@ THREE.TorusKnotBufferGeometry = function ( radius, tube, radialSegments, tubular
// this function calculates the current position on the torus curve
- function calculatePositionOnCurve( u, p, q, radius, heightScale, position ) {
+ function calculatePositionOnCurve( u, p, q, radius, position ) {
var cu = Math.cos( u );
var su = Math.sin( u );
@@ -158,7 +156,7 @@ THREE.TorusKnotBufferGeometry = function ( radius, tube, radialSegments, tubular
position.x = radius * ( 2 + cs ) * 0.5 * cu;
position.y = radius * ( 2 + cs ) * su * 0.5;
- position.z = heightScale * radius * Math.sin( quOverP ) * 0.5;
+ position.z = radius * Math.sin( quOverP ) * 0.5;
}
diff --git a/src/extras/geometries/TorusKnotGeometry.js b/src/extras/geometries/TorusKnotGeometry.js
index 93c77118e088dd..cd8209b27b4737 100644
--- a/src/extras/geometries/TorusKnotGeometry.js
+++ b/src/extras/geometries/TorusKnotGeometry.js
@@ -2,7 +2,7 @@
* @author oosmoxiecode
*/
-THREE.TorusKnotGeometry = function ( radius, tube, radialSegments, tubularSegments, p, q, heightScale, arc ) {
+THREE.TorusKnotGeometry = function ( radius, tube, tubularSegments, radialSegments, p, q, heightScale ) {
THREE.Geometry.call( this );
@@ -11,15 +11,15 @@ THREE.TorusKnotGeometry = function ( radius, tube, radialSegments, tubularSegmen
this.parameters = {
radius: radius,
tube: tube,
- radialSegments: radialSegments,
tubularSegments: tubularSegments,
+ radialSegments: radialSegments,
p: p,
- q: q,
- heightScale: heightScale,
- arc: arc
+ q: q
};
- this.fromBufferGeometry( new THREE.TorusKnotBufferGeometry( radius, tube, radialSegments, tubularSegments, p, q, heightScale, arc ) );
+ if( heightScale !== undefined ) console.warn( 'THREE.TorusKnotGeometry: heightScale has been deprecated. Use .scale( x, y, z ) instead.' );
+
+ this.fromBufferGeometry( new THREE.TorusKnotBufferGeometry( radius, tube, tubularSegments, radialSegments, p, q ) );
this.mergeVertices();
};
diff --git a/src/loaders/ObjectLoader.js b/src/loaders/ObjectLoader.js
index ae52100edc5d9b..60d86c2be783d1 100755
--- a/src/loaders/ObjectLoader.js
+++ b/src/loaders/ObjectLoader.js
@@ -225,15 +225,15 @@ THREE.ObjectLoader.prototype = {
break;
case 'TorusKnotGeometry':
+ case 'TorusKnotBufferGeometry':
- geometry = new THREE.TorusKnotGeometry(
+ geometry = new THREE[ data.type ](
data.radius,
data.tube,
data.radialSegments,
data.tubularSegments,
data.p,
- data.q,
- data.heightScale
+ data.q
);
break;
diff --git a/test/unit/extras/geometries/TorusKnotGeometry.tests.js b/test/unit/extras/geometries/TorusKnotGeometry.tests.js
index 3d864985dc8810..5e94f01b5c9e22 100644
--- a/test/unit/extras/geometries/TorusKnotGeometry.tests.js
+++ b/test/unit/extras/geometries/TorusKnotGeometry.tests.js
@@ -5,11 +5,10 @@
var parameters = {
radius: 10,
tube: 20,
- radialSegments: 30,
- tubularSegments: 10,
+ tubularSegments: 30,
+ radialSegments: 10,
p: 3,
- q: 2,
- heightScale: 2.0
+ q: 2
};
var geometries;
@@ -23,9 +22,9 @@
new THREE.TorusKnotGeometry(),
new THREE.TorusKnotGeometry( parameters.radius ),
new THREE.TorusKnotGeometry( parameters.radius, parameters.tube ),
- new THREE.TorusKnotGeometry( parameters.radius, parameters.tube, parameters.radialSegments ),
- new THREE.TorusKnotGeometry( parameters.radius, parameters.tube, parameters.radialSegments, parameters.tubularSegments ),
- new THREE.TorusKnotGeometry( parameters.radius, parameters.tube, parameters.radialSegments, parameters.tubularSegments, parameters.p, parameters.q, parameters.heightScale ),
+ new THREE.TorusKnotGeometry( parameters.radius, parameters.tube, parameters.tubularSegments ),
+ new THREE.TorusKnotGeometry( parameters.radius, parameters.tube, parameters.tubularSegments, parameters.radialSegments ),
+ new THREE.TorusKnotGeometry( parameters.radius, parameters.tube, parameters.tubularSegments, parameters.radialSegments, parameters.p, parameters.q ),
];