Wave implements Cloneable { public MaxEscapeTarget calculatePreciseEscapeAngle( boolean positiveGuessFactor) { RobotState startState = RobotState.newBuilder() .setLocation((Point2D.Double) targetLocation.clone()) .setHeading(targetHeading) .setVelocity(targetVelocity) .setTime(fireTime) .build(); return _predictor.preciseEscapeAngle( orbitDirection * (positiveGuessFactor ? 1 : -1), sourceLocation, fireTime, _bulletSpeed, startState, PRECISE_MEA_WALL_STICK); } protected  Wave();  Wave(String botName,
      Point2D.Double sourceLocation,
      Point2D.Double targetLocation,
      int fireRound,
      long fireTime,
      double bulletPower,
      double targetHeading,
      double targetVelocity,
      int targetVelocitySign,
      BattleField battleField,
      MovementPredictor predictor); Wave setAbsBearing(double absBearing); Wave setBulletPower(double power); Wave setAccel(double accel); Wave setDistance(double distance); Wave setDistanceToNearestBot(double distanceToNearestBot); Wave setDchangeTime(long dChangeTime); Wave setVchangeTime(long vChangeTime); Wave setDistanceLast8Ticks(double dl8t); Wave setDistanceLast20Ticks(double dl20t); Wave setDistanceLast40Ticks(double dl40t); Wave setTargetEnergy(double energy); Wave setSourceEnergy(double energy); Wave setGunHeat(double gunHeat); Wave setEnemiesAlive(int enemiesAlive); Wave setLastBulletFiredTime(long lastBulletFiredTime); Wave setAltWave(boolean altWave); double bulletPower(); double bulletSpeed(); double maxEscapeAngle(); double effectiveHeading(); double distanceTraveled(long currentTime); double lateralVelocity(); boolean processedBulletHit(); void setWallDistances(WallDistanceStyle style); double virtuality(); double firingAngle(double guessFactor); double firingAngleFromTargetLocation(Point2D.Double firingTarget); Point2D.Double displacementVector(RobotState waveBreakState); Point2D.Double displacementVector(
      Point2D.Double botLocation, long time); Point2D.Double projectLocationFromDisplacementVector(
      Point2D.Double dispVector); Point2D.Double projectLocationBlind(Point2D.Double myNextLocation,
      Point2D.Double dispVector, long currentTime); double guessFactor(Point2D.Double targetLocation); double guessFactor(double bearingToTarget); double guessAngle(Point2D.Double targetLocation); double guessAngle(double bearingToTarget); double guessFactorPrecise(Point2D.Double targetLocation); double guessFactorPrecise(double newBearingToTarget); double preciseEscapeAngle(boolean guessFactorSign); double escapeAngleRange(); MaxEscapeTarget calculatePreciseEscapeAngle(
      boolean positiveGuessFactor); void clearCachedPreciseEscapeAngles(); boolean shadowed(double firingAngle); void castShadow(Point2D.Double p1, Point2D.Double p2); double shadowFactor(Wave.Intersection intersection); Intersection preciseIntersection(List<RobotState> waveBreakStates); WavePosition checkWavePosition(RobotState currentState); WavePosition checkWavePosition(
      RobotState currentState, boolean skipMidair); WavePosition checkWavePosition(
      RobotState currentState, WavePosition maxPosition); WavePosition checkWavePosition(
      RobotState currentState, boolean skipMidair, WavePosition maxPosition); Object clone(); static final double PRECISE_MEA_WALL_STICK; static final Point2D.Double ORIGIN; static final double MAX_BOT_RADIUS; static final int CLOCKWISE; static final int COUNTERCLOCKWISE; static final boolean FIRING_WAVE; static final boolean SURFABLE_WAVE; static final boolean ANY_WAVE; static final boolean POSITIVE_GUESSFACTOR; static final boolean NEGATIVE_GUESSFACTOR; static final double ANY_BULLET_POWER; static final int FIRST_WAVE; public String botName; public Point2D.Double sourceLocation; public Point2D.Double targetLocation; public double absBearing; public int fireRound; public long fireTime; public int orbitDirection; public double targetHeading; public double targetRelativeHeading; public double targetVelocity; public boolean hitByBullet; public boolean bulletHitBullet; public boolean firingWave; public boolean altWave; public double targetAccel; public int targetVelocitySign; public double targetDistance; public double targetDistanceToNearestBot; public long targetDchangeTime; public long targetVchangeTime; public double targetWallDistance; public double targetRevWallDistance; public double targetDl8t; public double targetDl20t; public double targetDl40t; public double targetEnergy; public double sourceEnergy; public double gunHeat; public int enemiesAlive; public long lastBulletFiredTime; public List<BulletShadow> shadows; public boolean usedNegativeSmoothingMea; public boolean usedPositiveSmoothingMea; }
@Test public void testCalculatePreciseEscapeAngle() { fail("Not yet implemented"); }