]> granicus.if.org Git - poly2tri-c/commitdiff
Fix several bugs in p2tr_mesh_find_point_local2
authorBarak Itkin <lightningismyname@gmail.com>
Sat, 19 May 2012 10:06:26 +0000 (13:06 +0300)
committerBarak Itkin <lightningismyname@gmail.com>
Sat, 19 May 2012 10:06:26 +0000 (13:06 +0300)
refine/mesh.c

index 2272c6fa4b258df4c534d805e9d66930144155d1..a770a9690f6c1191ffba2b0fcc45e133dfa09111 100644 (file)
@@ -216,18 +216,23 @@ p2tr_mesh_find_point_local2 (P2trMesh          *self,
                              gdouble           *u,
                              gdouble           *v)
 {
-  P2trHashSet *checked_tris = p2tr_hash_set_new_default ();
+  P2trHashSet *checked_tris;
   GQueue to_check;
   P2trTriangle *result = NULL;
-  
+
+  if (initial_guess == NULL)
+    return p2tr_mesh_find_point2(self, pt, u, v);
+
+  checked_tris = p2tr_hash_set_new_default ();
   g_queue_init (&to_check);
-  
+  g_queue_push_head (&to_check, initial_guess);
+
   while (! g_queue_is_empty (&to_check))
     {
       P2trTriangle *tri = (P2trTriangle*) g_queue_pop_head (&to_check);
       
       p2tr_hash_set_insert (checked_tris, tri);
-      if (p2tr_triangle_contains_point2 (tri, pt, u, v))
+      if (p2tr_triangle_contains_point2 (tri, pt, u, v) != P2TR_INTRIANGLE_OUT)
         {
           result = tri;
           break;