protected PointOfInterest standingOrder(Point2D whereIAm) { Point2D target = new Point2D.Double( whereIAm.getX() + (spiralHeading.getDx() * MOVEMENT_LENGTH), whereIAm.getY() + (spiralHeading.getDy() * MOVEMENT_LENGTH)); while (!StaticDiver.pointIsOnBoard(target.getX(), target.getY(), boardRadius)) { switch (spiralHeading) { case N: spiralHeading = Direction.W; break; case E: spiralHeading = Direction.N; break; case S: spiralHeading = Direction.E; break; case W: spiralHeading = Direction.S; break; } target = new Point2D.Double( whereIAm.getX() + (spiralHeading.getDx() * MOVEMENT_LENGTH), whereIAm.getY() + (spiralHeading.getDy() * MOVEMENT_LENGTH)); } return new PointOfInterest(target); }