From c4da2082261d6e6b389b2c03045d34116561445b Mon Sep 17 00:00:00 2001 From: AmeyaKirtane <91632331+AmeyaKirtane@users.noreply.github.com> Date: Sat, 4 Feb 2023 01:38:10 -0500 Subject: [PATCH] Create searching.jl adds the findTraingle() and prevedge() method --- src/searching.jl | 41 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100644 src/searching.jl diff --git a/src/searching.jl b/src/searching.jl new file mode 100644 index 0000000..0e9b8d4 --- /dev/null +++ b/src/searching.jl @@ -0,0 +1,41 @@ +using GeometryBasics +using Delaunator + + +function _prevedge(i::Integer) + (i-1) % 3 == 0 ? i+2 : i -1 +end + +function findtriangle(t, p) + current = 1 + start = current + n = 0 + + while true + next = Delaunator._nextedge(current) + pc = t.points[(t._triangles[current])] + pn = t.points[(t._triangles[next])] + + o = Delaunator.orientIfSure(pc[1], pc[2],pn[1], pn[2],p[1], p[2]) + + if o >= 0 + current = next + if start == current + break + end + else + current = t.halfedges[current] + if current == -1 + break + end + n = n + 1 + if (n % 2 == 1) + current = Delaunator._nextedge(current) + else + current = Delaunator._prevedge(current) + end + start = current + end + end + return current == -1 ? -1 : div(current, 3) +1 +end