@@ -1782,9 +1782,11 @@ void ofMesh_<V,N,C,T>::smoothNormals( float angle ) {
17821782 if ( getMode () == OF_PRIMITIVE_TRIANGLES) {
17831783 std::vector<ofMeshFace_<V,N,C,T>> triangles = getUniqueFaces ();
17841784 std::vector<V> verts;
1785+ verts.reserve ( triangles.size () * 3 );
1786+
17851787 for (ofIndexType i = 0 ; i < triangles.size (); i++) {
17861788 for (ofIndexType j = 0 ; j < 3 ; j++) {
1787- verts.push_back ( triangles[i].getVertex (j) );
1789+ verts.emplace_back ( triangles[i].getVertex (j) );
17881790 }
17891791 }
17901792
@@ -1811,20 +1813,21 @@ void ofMesh_<V,N,C,T>::smoothNormals( float angle ) {
18111813
18121814 // ofLogNotice("ofMesh") << "smoothNormals(): num verts = " << verts.size() << " tris size = " << triangles.size();
18131815
1814- std::string xStr, yStr, zStr;
18151816
18161817 for (ofIndexType i = 0 ; i < verts.size (); i++ ) {
1817- xStr = " x" +ofToString (verts[i].x ==-0 ?0 :verts[i].x );
1818- yStr = " y" +ofToString (verts[i].y ==-0 ?0 :verts[i].y );
1819- zStr = " z" +ofToString (verts[i].z ==-0 ?0 :verts[i].z );
1820- std::string vstring = xStr+yStr+zStr;
1818+ std::string vstring {
1819+ " x" +ofToString (verts[i].x ==-0 ?0 :verts[i].x ) +
1820+ " y" +ofToString (verts[i].y ==-0 ?0 :verts[i].y ) +
1821+ " z" +ofToString (verts[i].z ==-0 ?0 :verts[i].z )
1822+ };
1823+
18211824 if (vertHash.find (vstring) == vertHash.end ()) {
18221825 for (ofIndexType j = 0 ; j < triangles.size (); j++) {
18231826 for (ofIndexType k = 0 ; k < 3 ; k++) {
18241827 if (verts[i].x == triangles[j].getVertex (k).x ) {
18251828 if (verts[i].y == triangles[j].getVertex (k).y ) {
18261829 if (verts[i].z == triangles[j].getVertex (k).z ) {
1827- vertHash[vstring].push_back ( j );
1830+ vertHash[vstring].emplace_back ( j );
18281831 }
18291832 }
18301833 }
@@ -1846,11 +1849,12 @@ void ofMesh_<V,N,C,T>::smoothNormals( float angle ) {
18461849 for (ofIndexType j = 0 ; j < triangles.size (); j++) {
18471850 for (ofIndexType k = 0 ; k < 3 ; k++) {
18481851 vert = triangles[j].getVertex (k);
1849- xStr = " x" +ofToString (vert.x ==-0 ?0 :vert.x );
1850- yStr = " y" +ofToString (vert.y ==-0 ?0 :vert.y );
1851- zStr = " z" +ofToString (vert.z ==-0 ?0 :vert.z );
1852-
1853- std::string vstring = xStr+yStr+zStr;
1852+ std::string vstring {
1853+ " x" +ofToString (vert.x ==-0 ?0 :vert.x ) +
1854+ " y" +ofToString (vert.y ==-0 ?0 :vert.y ) +
1855+ " z" +ofToString (vert.z ==-0 ?0 :vert.z )
1856+ };
1857+
18541858 numNormals=0 ;
18551859 normal = {0 .f ,0 .f ,0 .f };
18561860 if (vertHash.find (vstring) != vertHash.end ()) {
@@ -2118,8 +2122,8 @@ ofMesh_<V,N,C,T> ofMesh_<V,N,C,T>::sphere( float radius, int res, ofPrimitiveMod
21182122// --------------------------------------------------------------
21192123template <class V , class N , class C , class T >
21202124ofMesh_<V,N,C,T> ofMesh_<V,N,C,T>::icosahedron(float radius) {
2121- auto mesh = icosphere (radius, 0 );
2122- mesh.flatNormals ();
2125+ auto mesh { icosphere (radius, 0 ) } ;
2126+ mesh.flatNormals ();
21232127 return mesh;
21242128}
21252129
@@ -2137,6 +2141,8 @@ ofMesh_<V,N,C,T> ofMesh_<V,N,C,T>::icosphere(float radius, std::size_t iteration
21372141 const float phi = (1 .0f + sqrt5) * 0 .5f ;
21382142 const float invnorm = 1 /sqrt (phi*phi+1 );
21392143
2144+
2145+ // FIXME: addvertices XAXA
21402146 sphere.addVertex (invnorm * V (-1 , phi, 0 ));// 0
21412147 sphere.addVertex (invnorm * V ( 1 , phi, 0 ));// 1
21422148 sphere.addVertex (invnorm * V (0 , 1 , -phi));// 2
@@ -2173,7 +2179,7 @@ ofMesh_<V,N,C,T> ofMesh_<V,N,C,T>::icosphere(float radius, std::size_t iteration
21732179 10 ,11 ,9
21742180 };
21752181
2176- for (ofIndexType i = 0 ; i < 60 ; i+=3 ) {
2182+ for (ofIndexType i = 0 ; i < 60 ; i+=3 ) {
21772183 sphere.addTriangle (firstFaces[i], firstFaces[i+1 ], firstFaces[i+2 ]);
21782184 }
21792185
0 commit comments