コード例 #1
0
ファイル: sweep_context.c プロジェクト: KyleLink/poly2tri-c
void
p2t_sweepcontext_map_triangle_to_nodes (P2tSweepContext *THIS, P2tTriangle* t)
{
  int i;
  for (i = 0; i < 3; i++)
    {
      if (!p2t_triangle_get_neighbor (t, i))
        {
          P2tNode* n = p2t_advancingfront_locate_point (THIS->front_, p2t_triangle_point_cw (t, p2t_triangle_get_point (t, i)));
          if (n)
            n->triangle = t;
        }
    }
}
コード例 #2
0
ファイル: sweep_context.c プロジェクト: nutellarlz/Navination
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));
        }
    }
}
コード例 #3
0
ファイル: sweep_context.c プロジェクト: KyleLink/poly2tri-c
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));
            }
        }
    }
}