@@ -113,7 +113,7 @@ class TrTinImpl : public TrTin
113
113
virtual bool SwapEdge (int a_triA, int a_triB, bool a_checkAngle = true ) override ;
114
114
virtual void DeleteTriangles (const SetInt& a_trisToDelete) override ;
115
115
virtual void DeletePoints (const SetInt& a_points) override ;
116
- virtual void OptimizeTriangulation () override ;
116
+ virtual bool OptimizeTriangulation () override ;
117
117
virtual void Clear () override ;
118
118
virtual void BuildTrisAdjToPts () override ;
119
119
@@ -1098,9 +1098,11 @@ void TrTinImpl::DeletePoints(const SetInt& a_points)
1098
1098
} // TrTinImpl::DeletePoints
1099
1099
// ------------------------------------------------------------------------------
1100
1100
// / \brief Swaps triangle edges until they are a Delauney triangulation.
1101
+ // / \return True if modified.
1101
1102
// ------------------------------------------------------------------------------
1102
- void TrTinImpl::OptimizeTriangulation ()
1103
+ bool TrTinImpl::OptimizeTriangulation ()
1103
1104
{
1105
+ bool modified = false ;
1104
1106
int nTri = NumTriangles ();
1105
1107
VecInt flags (nTri, false );
1106
1108
@@ -1132,8 +1134,11 @@ void TrTinImpl::OptimizeTriangulation()
1132
1134
}
1133
1135
}
1134
1136
}
1137
+ if (meshaltered)
1138
+ modified = true ;
1135
1139
} while (meshaltered);
1136
1140
1141
+ return true ;
1137
1142
} // TrTinImpl::OptimizeTriangulation
1138
1143
// ------------------------------------------------------------------------------
1139
1144
// / \brief Delete the memory.
@@ -1767,7 +1772,7 @@ void TrTinUnitTests::testOptimizeTriangulation()
1767
1772
TS_ASSERT_EQUALS ((VecInt{0 , 1 , 2 , 3 , 5 , 6 , 7 , 8 }), boundaryPoints);
1768
1773
1769
1774
// Optimize
1770
- tin->OptimizeTriangulation ();
1775
+ TS_ASSERT ( tin->OptimizeTriangulation () );
1771
1776
VecInt trisAfter = {0 , 1 , 3 , 1 , 6 , 3 , 1 , 4 , 6 , 4 , 7 , 6 , 1 , 2 , 4 , 2 , 7 , 4 , 2 , 5 , 7 , 5 , 8 , 7 };
1772
1777
TS_ASSERT_EQUALS_VEC (trisAfter, tin->Triangles ());
1773
1778
0 commit comments