@@ -281,23 +281,20 @@ void EmbeddedGeometryInterface::computeCornerAngles() {
281281
282282 cornerAngles = CornerData<double >(mesh);
283283
284- for (Corner c : mesh.corners ()) {
285-
286- // WARNING: Logic duplicated between cached and immediate version
287- Halfedge he = c.halfedge ();
288- Vector3 pA = vertexPositions[he.vertex ()];
289- he = he.next ();
290- Vector3 pB = vertexPositions[he.vertex ()];
291- do {
292- he = he.next ();
293- } while (he.next () != c.halfedge ());
294- Vector3 pC = vertexPositions[he.vertex ()];
284+ for (Face f : mesh.faces ()) {
285+ for (Halfedge he : f.adjacentHalfedges ()) {
286+ // WARNING: Logic duplicated between cached and immediate version
287+ Vector3 pA = vertexPositions[he.vertex ()];
288+ Halfedge heNext = he.next ();
289+ Vector3 pB = vertexPositions[heNext.vertex ()];
290+ Vector3 pC = vertexPositions[heNext.next ().vertex ()];
295291
296- double q = dot (unit (pB - pA ), unit (pC - pA ));
297- q = clamp (q, -1.0 , 1.0 );
298- double angle = std::acos (q);
292+ double q = dot (unit (pC - pB ), unit (pA - pB ));
293+ q = clamp (q, -1.0 , 1.0 );
294+ double angle = std::acos (q);
299295
300- cornerAngles[c] = angle;
296+ cornerAngles[heNext.corner ()] = angle;
297+ }
301298 }
302299}
303300
0 commit comments