From 6f9d8407c3e8b422c1b6e64452d4e1590c078632 Mon Sep 17 00:00:00 2001 From: "Mr.doob" Date: Wed, 12 Mar 2014 20:48:05 -0400 Subject: [PATCH] CircleGeometry fixed properly now. --- src/extras/geometries/CircleGeometry.js | 34 +++++++++++++++---------- 1 file changed, 21 insertions(+), 13 deletions(-) diff --git a/src/extras/geometries/CircleGeometry.js b/src/extras/geometries/CircleGeometry.js index b3e211f5ce..f5ed822314 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; } -- GitLab