public Compass getQuadrant() {
        if (isOrigin()) return Compass.CENTER;
        if (rep.x() == 0.0d) {
            return (rep.y() > 0.0d) ? Compass.N : Compass.S;
        } else if (rep.y() == 0.0d) {
            return (rep.x() > 0.0d) ? Compass.E : Compass.W;
        }
        double angle = rep.arg();
        if (angle < QUAD1) return Compass.SW;
        if (angle < QUAD2) return Compass.SE;
        if (angle < QUAD3) return Compass.NE;
        return Compass.NW;
    }