From d56c0459a2fff3c423a60bc434aa639236119f73 Mon Sep 17 00:00:00 2001 From: JimmyBoivie Date: Fri, 4 Dec 2015 22:39:00 -0500 Subject: [PATCH] matching --- main/DrawHalfEdge.pde | 4 ++-- main/HalfEdge.pde | 7 ++++++- main/Vertex.pde | 44 +++++++++++++++++++++++++++++++------------ main/main.pde | 6 +++--- 4 files changed, 43 insertions(+), 18 deletions(-) diff --git a/main/DrawHalfEdge.pde b/main/DrawHalfEdge.pde index 6b1acc0..aafe6d9 100644 --- a/main/DrawHalfEdge.pde +++ b/main/DrawHalfEdge.pde @@ -20,14 +20,14 @@ public class DrawHalfEdge { System.out.println(vertex); if(edges != null) { for(HalfEdge edge: edges) { - System.out.println(edge); + //System.out.println(edge); drawConnection(edge.gettwin(), vertex); } } } public void drawConnection(HalfEdge edge, Vertex v1) { - System.out.println("drawing connection"); + //System.out.println("drawing connection"); Vertex v2 = edge.getOrigin(); drawpoint(v2); drawline(v1, v2); diff --git a/main/HalfEdge.pde b/main/HalfEdge.pde index cb4b5f9..98e35f1 100644 --- a/main/HalfEdge.pde +++ b/main/HalfEdge.pde @@ -31,7 +31,9 @@ public class HalfEdge { v1.setIncidentEdge(this); } else { twin.setnext(try1[1]); + try1[1].setprevious(twin); previous = try1[0]; + try1[0].setnext(this); } HalfEdge[] try2 = v2.getEdgesToUpdate(v1); @@ -41,9 +43,12 @@ public class HalfEdge { v2.setIncidentEdge(twin); } else { twin.setprevious(try2[0]); + try2[0].setnext(twin); next = try2[1]; + try2[1].setprevious(this); } - System.out.println(this); + if ((try1 == null) || ( try2 == null)) { System.out.println("HEY BOTH NULL"); } + //System.out.println(this); // Set Nexts // Set Prevs diff --git a/main/Vertex.pde b/main/Vertex.pde index 92a3974..4be053c 100644 --- a/main/Vertex.pde +++ b/main/Vertex.pde @@ -41,11 +41,13 @@ public class Vertex { if (halfedge == null) { return null; } ArrayList leaving = getAllLeavingEdges(); HalfEdge[] prevNext = new HalfEdge[2]; + System.out.println("TEST\n"); if (leaving.size() == 1) { prevNext[1] = leaving.get(0); prevNext[0] = prevNext[1].gettwin(); return prevNext; } + System.out.println("TEST2\n"); Vertex v1 = this; Vertex v4 = v; Vertex v2; @@ -54,21 +56,33 @@ public class Vertex { for (int i = 0; i < leaving.size(); i++) { temp[i] = 0; } + System.out.println("TEST3\n"); for (int i = 0; i < leaving.size(); i++) { - v2 = leaving.get(i).getOrigin(); - v3 = leaving.get((i+1)%leaving.size()).getOrigin(); + v2 = leaving.get(i).gettwin().getOrigin(); + v3 = leaving.get((i+1)%leaving.size()).gettwin().getOrigin(); if (is2closerCCWof4(v1, v2, v3, v4)) { + System.out.println(i); temp[i]++; } else { + System.out.println((i+1)%leaving.size()); temp[(i+1)%leaving.size()]++; } } + System.out.println("TEST4\n"); for (int i = 0; i < leaving.size(); i++) { - if (temp[i] == 0) { - prevNext[1] = leaving.get(i); - prevNext[0] = prevNext[1].getprevious(); + System.out.println("Temp[" + i + "] = " + temp[i]); + if (temp[i] == 2) { + System.out.println(leaving.get(i).gettwin()); + System.out.println(leaving.get(i).gettwin().getnext()); + //prevNext[1] = leaving.get(i); + //prevNext[0] = prevNext[1].getprevious(); } } + System.out.println("Test5\n"); + + System.out.println(prevNext[0]); + System.out.println(prevNext[1]); + return prevNext; } @@ -93,36 +107,42 @@ public class Vertex { } public boolean is2closerCCWof4(Vertex v1, Vertex v2, Vertex v3, Vertex v4) { + float tolerance = 0; float[] ss12 = safeSlope(v2.getY()-v1.getY(), v2.getX()-v1.getX()); float[] ss13 = safeSlope(v3.getY()-v1.getY(), v3.getX()-v1.getX()); float[] ss14 = safeSlope(v4.getY()-v1.getY(), v4.getX()-v1.getX()); + System.out.println(v1); + System.out.println(v2); + System.out.println(v3); + System.out.println(v4); + System.out.println(ss12[0] + " " + ss12[1] + " " + ss13[0] + " " + ss13[1] + " " + ss14[0] + " " + ss14[1]); if (ss14[0] == Float.POSITIVE_INFINITY) { if (ss14[1] == 1) { if (ss12[1] > ss13[1]) { return true; } if (ss13[1] > ss12[1]) { return false; } - if (ss12[0] < ss13[0]) { return true; } + if (ss12[0] - tolerance < ss13[0]) { return true; } else { return false; } } else { if (ss12[1] < ss13[1]) { return true; } if (ss13[1] < ss12[1]) { return false; } - if (ss12[0] < ss13[0]) { return true; } + if (ss12[0] - tolerance < ss13[0]) { return true; } else { return false; } } } if (ss12[1] == ss13[1]) { - if (ss12[0] > ss14[0]) { - if ((ss13[0] > ss12[0]) || (ss13[0] < ss14[0])) { return true; } + if (ss12[0] + tolerance > ss14[0]) { + if ((ss13[0] > ss12[0]) || (ss13[0] - tolerance < ss14[0])) { return true; } else { return false; } } else { - if ((ss13[0] > ss12[0]) && (ss13[0] < ss14[0])) { return true; } + if ((ss13[0] > ss12[0]) && (ss13[0] - tolerance < ss14[0])) { return true; } else { return false; } } } if (ss12[1] == ss14[1]) { - if (ss12[0] > ss14[0]) { return true; } + if (ss12[0] + tolerance > ss14[0]) { return true; } else { return false; } } else { - if (ss13[0] < ss14[0]) { return true; } + if (ss13[0] - tolerance < ss14[0]) { return true; } else { return false; } } diff --git a/main/main.pde b/main/main.pde index 7b16fc7..12cbc62 100644 --- a/main/main.pde +++ b/main/main.pde @@ -8,7 +8,7 @@ public void setup() { VertexList list = new VertexList(); Vertex v = new Vertex(0,0); Vertex v1 = new Vertex(0,200); - Vertex v2 = new Vertex(100,100); + Vertex v2 = new Vertex(80,100); Vertex v3 = new Vertex(200,0); Vertex v4 = new Vertex(-100,-100); list.addVertex(v); @@ -25,8 +25,8 @@ public void setup() { h1.facePrint(); HalfEdge h4 = new HalfEdge(v,v4); h1.facePrint(); - HalfEdge h5 = new HalfEdge(v1,v2); - h1.facePrint(); + //HalfEdge h5 = new HalfEdge(v1,v2); + //h1.facePrint(); draw.drawGraph(list.getVertexList()); } /*public void draw() {