diff --git a/main/PointList.pde b/main/PointList.pde index c8e765f..788589a 100644 --- a/main/PointList.pde +++ b/main/PointList.pde @@ -61,11 +61,13 @@ public class PointList { } HalfEdge first = p.getRef(); if (first == null) { return null; } + if (first.gettwin().getOrigin().equals(q)) { return first; } HalfEdge temp = first.gettwin().getnext(); while (temp != first) { if (temp.gettwin().getOrigin().equals(q)) { return temp; } + temp = temp.gettwin().getnext(); } return null; } diff --git a/main/main.pde b/main/main.pde index df6bff5..68a300c 100644 --- a/main/main.pde +++ b/main/main.pde @@ -4,6 +4,9 @@ int mode = 0; Point pointclicked; PointList list = new PointList(); DrawHalfEdge drawgraph = new DrawHalfEdge(); +boolean removeEdge = false; +Point removeEdgePoint; + public void setup() { size(800, 500); @@ -100,7 +103,7 @@ void keyPressed() { case 'r': mode = 1; break; - case 'h': + case 'e': mode = 2; break; case 'p': @@ -125,6 +128,9 @@ void mouseReleased() { case 1: removePointMode(x,y); break; + case 2: + removeEdgeMode(x,y); + break; } } public void insertMode(float x, float y) { @@ -162,7 +168,6 @@ public void insertMode(float x, float y) { } public void removePointMode(float x, float y) { - System.out.println("entered remove point"); boolean removePoint = false; Point removeThis = null; for(Point p: list.getPoints()) { @@ -178,3 +183,33 @@ public void removePointMode(float x, float y) { list.removePoint(removeThis); } } + +public void removeEdgeMode(float x, float y) { + if(removeEdge) { + for(Point p: list.getPoints()) { + if((p.getX() - 10 < x) && (p.getX() + 10 > x)) { + if((p.getY() - 10 < y) && (p.getY() + 10 > y)) { + HalfEdge h = list.getHalfEdge(removeEdgePoint, p); + System.out.println("is halfedge null?"); + System.out.println(p); + if(h != null) { + System.out.println("edge should be removed"); + h.Remove(); + } + removeEdge = false; + } + } + } + } else { + for(Point p: list.getPoints()) { + if((p.getX() - 10 < x) && (p.getX() + 10 > x)) { + if((p.getY() - 10 < y) && (p.getY() + 10 > y)) { + System.out.println("got first point"); + System.out.println(p); + removeEdgePoint = p; + removeEdge = true; + } + } + } + } +}