public static FGEQuarterPlane makeFGEQuarterPlane(FGEPoint point, CardinalQuadrant quadrant) {
   if (quadrant == CardinalQuadrant.NORTH_EAST) {
     return new FGEQuarterPlane(
         FGEHalfPlane.makeFGEHalfPlane(point, CardinalDirection.NORTH),
         FGEHalfPlane.makeFGEHalfPlane(point, CardinalDirection.EAST));
   } else if (quadrant == CardinalQuadrant.NORTH_WEST) {
     return new FGEQuarterPlane(
         FGEHalfPlane.makeFGEHalfPlane(point, CardinalDirection.NORTH),
         FGEHalfPlane.makeFGEHalfPlane(point, CardinalDirection.WEST));
   } else if (quadrant == CardinalQuadrant.SOUTH_EAST) {
     return new FGEQuarterPlane(
         FGEHalfPlane.makeFGEHalfPlane(point, CardinalDirection.SOUTH),
         FGEHalfPlane.makeFGEHalfPlane(point, CardinalDirection.EAST));
   } else /* quadrant == CardinalQuadrant.SOUTH_WEST */ {
     return new FGEQuarterPlane(
         FGEHalfPlane.makeFGEHalfPlane(point, CardinalDirection.SOUTH),
         FGEHalfPlane.makeFGEHalfPlane(point, CardinalDirection.WEST));
   }
 }
 @Override
 public FGEQuarterPlane transform(AffineTransform t) {
   return new FGEQuarterPlane(halfPlane1.transform(t), halfPlane2.transform(t));
 }
 @Override
 public boolean containsPoint(FGEPoint p) {
   return halfPlane1.containsPoint(p) && halfPlane2.containsPoint(p);
 }
 @Override
 public String toString() {
   return "FGEQuarterPlane: " + halfPlane1.toString() + " " + halfPlane2.toString();
 }