void p2t_sweepcontext_mesh_clean (P2tSweepContext *THIS, P2tTriangle* triangle) { int i; if (triangle != NULL && !p2t_triangle_is_interior (triangle)) { p2t_triangle_is_interior_b (triangle, TRUE); g_ptr_array_add (THIS->triangles_, triangle); for (i = 0; i < 3; i++) { if (!triangle->constrained_edge[i]) p2t_sweepcontext_mesh_clean (THIS, p2t_triangle_get_neighbor (triangle, i)); } } }
void p2t_sweepcontext_mesh_clean (P2tSweepContext *THIS, P2tTriangle* triangle) { GQueue triangles = G_QUEUE_INIT; int i; g_queue_push_tail (&triangles, triangle); while (! g_queue_is_empty (&triangles)) { P2tTriangle* t = (P2tTriangle*) g_queue_pop_tail (&triangles); if (t != NULL && !p2t_triangle_is_interior (t)) { p2t_triangle_is_interior_b (t, TRUE); g_ptr_array_add (THIS->triangles_, t); for (i = 0; i < 3; i++) { if (! t->constrained_edge[i]) g_queue_push_tail (&triangles, p2t_triangle_get_neighbor (t, i)); } } } }