Movement Distance

Ship movement is computed in exact numbers. PHost computes the angle to the ship's waypoint, and moves it there using double-precision floating point. Thus, it is possible that a ship hits a mine after 17.3 ly at coordinates (2351.56, 1792.35). For reporting, and for actually placing the ship in the game universe, it has to round.

New_position =
   (Waypoint_X, Waypoint_Y)
                     ...if Distance_moved = Distance_to_waypoint
                        (i.e. waypoint reached exactly)
   (Position_X + Ceil(Distance_moved * Cos(Heading)),
    Position_Y + Ceil(Distance_moved * Sin(Heading)))
   ...with
      Heading = ArcTan(Waypoint_X - Position_X, Waypoint_Y - Position_Y)

Two noteworthy properties of this formula:

  • Because of the Ceil(...), PHost guarantees you to be able to move your maximum distance. A distance of 81 ly can always be covered with Warp 9, rounding effects will never reduce it below. Regarding fuel consumption, the excess is free.
  • Rounding can cause mine hits to be reported slightly outside the minefield.
This is a testing version.
It may be incomplete, and have more bugs (or features) than the public live version at planetscentral.com.