From 14fdd389c1a01b5e0a9a6745eed1119bc5d9b780 Mon Sep 17 00:00:00 2001 From: JimmyBoivie Date: Mon, 7 Dec 2015 16:33:49 -0500 Subject: [PATCH] intsersect check for drawing --- main/HalfEdge.pde | 22 +++++++++++++++++++++- main/PointList.pde | 13 ++++++++++++- main/main.pde | 36 ++++++++++++++++++------------------ 3 files changed, 51 insertions(+), 20 deletions(-) diff --git a/main/HalfEdge.pde b/main/HalfEdge.pde index 01e8e09..5fd1a5d 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()) { + 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) { @@ -346,4 +366,4 @@ public class HalfEdge { } } -} \ No newline at end of file +} diff --git a/main/PointList.pde b/main/PointList.pde index a0676ef..2120a77 100644 --- a/main/PointList.pde +++ b/main/PointList.pde @@ -49,5 +49,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; + } -} \ No newline at end of file +} diff --git a/main/main.pde b/main/main.pde index d2f0149..a895c12 100644 --- a/main/main.pde +++ b/main/main.pde @@ -9,39 +9,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); @@ -85,7 +85,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());