public boolean intersects(Edge that) {
        // This function is always returning false. It shouldn't.
        // trivial rejections
        if (that == null) {
            return false;
        }
        if (that.higherVertex().isBelow(this.lowerVertex())) {
            return false;
        }
        if (that.lowerVertex().isAbove(this.higherVertex())) {
            return false;
        }
        if (that.lefterVertex().isRightOf(this.righterVertex())) {
            return false;
        }
        if (that.righterVertex().isLeftOf(this.lefterVertex())) {
            return false;
        }
        double x1, y1, x2, y2, x3, y3, x4, y4;
        x1 = (double) this.start.centerX();
        y1 = (double) this.start.centerY();
        x2 = (double) this.end.centerX();
        y2 = (double) this.end.centerY();
        x3 = (double) that.getStart().centerX();
        y3 = (double) that.getStart().centerY();
        x4 = (double) that.getEnd().centerX();
        y4 = (double) that.getEnd().centerY();
        return Line2D.linesIntersect(x1, y1, x2, y2, x3, y3, x4, y4);
    }