diff --git a/main/HalfEdge.pde b/main/HalfEdge.pde index b6deba3..f75cf79 100644 --- a/main/HalfEdge.pde +++ b/main/HalfEdge.pde @@ -261,6 +261,26 @@ public class HalfEdge { } return false; } + + public boolean intersectsStructure(Point p, Point q) { + boolean out = intersectsEventually(p, q); + reset(); + return out; + } + + private boolean intersectsEventually(Point p, Point q) { + if (this.getOrigin().equals(p)) { return false; } + if (this.getOrigin().equals(q)) { return false; } + if (CompGeo.intersect(p, q, this.getOrigin(), this.gettwin().getOrigin()) == 1) { + return true; + } + if (counted == false) { + counted = true; + return (twin.intersectsEventually(p, q) || next.intersectsEventually(p,q) || previous.intersectsEventually(p,q)); + } + return false; + } + private boolean isReachableNext(HalfEdge h) { if (this == h) { return true; } if (counted == false) { diff --git a/main/Point.pde b/main/Point.pde index c371c7e..73432ff 100644 --- a/main/Point.pde +++ b/main/Point.pde @@ -58,6 +58,11 @@ public class Point { return ref.countReset(); } + public void deleteEdges() { + while(ref != null) { + ref.Remove(); + } + + } - -} \ No newline at end of file +} diff --git a/main/PointList.pde b/main/PointList.pde index 6801f42..3001f6f 100644 --- a/main/PointList.pde +++ b/main/PointList.pde @@ -50,5 +50,16 @@ public class PointList { } return struct; } + + public boolean intersectsSomething(Point p, Point q) { + ArrayList structures = getAllStructures(); + int num = structures.size(); + for (int i = 0; i < num; i++) { + if (structures.get(i).intersectsStructure(p,q) == true) { + return true; + } + } + return false; + } } diff --git a/main/main.pde b/main/main.pde index 0558fc9..0be5e5d 100644 --- a/main/main.pde +++ b/main/main.pde @@ -10,40 +10,39 @@ public void setup() { background(255); fill(0,0); translate(width/2, height/2); - - Point p1 = new Point(0, 0); + Point p1 = new Point(300, 300); list.addPoint(p1); - Point p2 = new Point(100, 50); + Point p2 = new Point(400, 350); list.addPoint(p2); - Point p3 = new Point(-200, -50); + Point p3 = new Point(100, 250); list.addPoint(p3); - Point p4 = new Point(0, 150); + Point p4 = new Point(300, 450); list.addPoint(p4); - Point p5 = new Point(200, 0); + Point p5 = new Point(500, 300); list.addPoint(p5); - Point p6 = new Point (-20, -40); + Point p6 = new Point (280, 260); list.addPoint(p6); - Point p7 = new Point(-50, 0); + Point p7 = new Point(250, 300); list.addPoint(p7); - Point p8 = new Point(-100, 0); + Point p8 = new Point(200, 300); list.addPoint(p8); - Point p9 = new Point(-100, 35); + Point p9 = new Point(200, 335); list.addPoint(p9); - Point p10 = new Point(-50, 35); + Point p10 = new Point(250, 335); list.addPoint(p10); - Point p11 = new Point(-80, 15); + Point p11 = new Point(200, 315); list.addPoint(p11); - Point p12 = new Point(-60, 25); + Point p12 = new Point(240, 325); list.addPoint(p12); - Point p13 = new Point (-25, 25); + Point p13 = new Point (275, 325); list.addPoint(p13); - Point p14 = new Point (-25, 100); + Point p14 = new Point (275, 400); list.addPoint(p14); - Point p15 = new Point(-150, -20); + Point p15 = new Point(150, 280); list.addPoint(p15); - Point p16 = new Point (20, 50); + Point p16 = new Point (320, 350); list.addPoint(p16); - Point p17 = new Point (20, 100); + Point p17 = new Point (320, 400); list.addPoint(p17); HalfEdge h1 = new HalfEdge(p1, p2); HalfEdge h2 = new HalfEdge(p1, p4); @@ -87,7 +86,7 @@ public void setup() { //h1.facePrint(); //drawgraph.drawGraph(list.getPoints()); //(new Face(h4, list)).printFace(); - //(new Face(h12, list)).printFace(); + (new Face(h12, list)).printFace(); } void draw() { drawgraph.drawGraph(list.getPoints());