public void calculate() {
   if (!isDone) {
     if (distance() < 0.003) {
       lon = nextStation.getCoordinatePoint().getLon();
       lat = nextStation.getCoordinatePoint().getLat();
       prStation = nextStation;
       route.getRoute().remove(0);
       if (prStation == fStation) {
         done();
       } else {
         nextStation = route.getRoute().get(1);
       }
     }
   }
   destination = nextStation.getCoordinatePoint();
 }
 public Emulation(Route r) {
   route = r;
   sStation = route.getRoute().get(0);
   fStation = route.getRoute().get(route.getRoute().size() - 1);
   lon = sStation.getCoordinatePoint().getLon();
   lat = sStation.getCoordinatePoint().getLat();
   prStation = sStation;
   nextStation = route.getRoute().get(1);
 }
 public void Emulate() {
   if (!isDone) {
     if (distance() < 0.003) {
       calculate();
     } else {
       lon +=
           0.002
               * Math.cos(
                   Math.atan2(
                       (nextStation.getCoordinatePoint().getLat()
                           - prStation.getCoordinatePoint().getLat()),
                       (nextStation.getCoordinatePoint().getLon()
                           - prStation.getCoordinatePoint().getLon())));
       lat +=
           0.002
               * Math.sin(
                   Math.atan2(
                       (nextStation.getCoordinatePoint().getLat()
                           - prStation.getCoordinatePoint().getLat()),
                       (nextStation.getCoordinatePoint().getLon()
                           - prStation.getCoordinatePoint().getLon())));
     }
   }
 }
 public double distance() {
   return (Math.sqrt(
       Math.pow((nextStation.getCoordinatePoint().getLat() - lat), 2)
           + Math.pow((nextStation.getCoordinatePoint().getLon() - lon), 2)));
 }