diff --git a/src/extras/geometries/CircleGeometry.js b/src/extras/geometries/CircleGeometry.js index b3e211f5ce685491a7335da3acdbd7acefcdeb91..f5ed822314c8f1accdd56990d9efa8d5ee49186e 100644 --- a/src/extras/geometries/CircleGeometry.js +++ b/src/extras/geometries/CircleGeometry.js @@ -20,17 +20,21 @@ THREE.CircleGeometry = function ( radius, segments, thetaStart, thetaLength ) { // - var indices = new Uint16Array( ( segments + 1 ) * 3 ); - var vertices = new Float32Array( ( segments + 2 ) * 3 ); - var normals = new Float32Array( ( segments + 2 ) * 3 ); - var uvs = new Float32Array( ( segments + 2 ) * 2 ); + var elements = segments + 2; + + var indices = new Uint16Array( segments * 3 ); + var vertices = new Float32Array( elements * 3 ); + var normals = new Float32Array( elements * 3 ); + var uvs = new Float32Array( elements * 2 ); + + // center normals[ 2 ] = 1; uvs[ 0 ] = 0.5; uvs[ 1 ] = 0.5; - var offset = 3, offset2 = 2; + var offset = 0, offset2 = 2, offset3 = 3; for ( var i = 0; i <= segments; i ++ ) { @@ -39,20 +43,24 @@ THREE.CircleGeometry = function ( radius, segments, thetaStart, thetaLength ) { var x = radius * Math.cos( segment ); var y = radius * Math.sin( segment ); - vertices[ offset ] = x; - vertices[ offset + 1 ] = y; + vertices[ offset3 ] = x; + vertices[ offset3 + 1 ] = y; - normals[ offset + 2 ] = 1; + normals[ offset3 + 2 ] = 1; uvs[ offset2 ] = ( x / radius + 1 ) / 2; uvs[ offset2 + 1 ] = ( y / radius + 1 ) / 2; - indices[ offset ] = i + 1; - indices[ offset + 1 ] = i + 2; - indices[ offset + 2 ] = 0; - - offset += 3; offset2 += 2; + offset3 += 3; + + // + + indices[ offset ] = 0; + indices[ offset + 1 ] = i + 1; + indices[ offset + 2 ] = i + 2; + + offset += 3; }