001 package ps2;
002
003 import java.text.DecimalFormat;
004
005
006 /**
007 * <p>
008 * The DrivingRouteFormatter class creates a textual description of
009 * directions for traversing a route that are suitable for a driver of
010 * a vehicle.
011 * </p>
012 *
013 * <p>
014 * Calling <tt>computeDirections</tt> should produce directions in the
015 * following form:
016 * </p>
017 *
018 * <p>
019 * <tt>
020 * Turn right onto Baker Street and go 1.2 miles.<br />
021 * Turn slight left onto MacGregor Street and go 0.8 miles.<br />
022 * Turn sharp right onto Burton street and go 2.3 miles.<br />
023 * Continue onto Connor Street and go 1.1 miles.<br />
024 * </tt>
025 * </p>
026 *
027 * <p>
028 * Each line should correspond to a single geographic feature of the
029 * route. In the first line, "Baker Street" is the name of the first
030 * geographical feature of the route, and "1.2 miles" is the length of
031 * the geographic feature. The length should be reported to
032 * tenth-of-a-mile precision. Each line should be terminated by a
033 * newline and should include no extra spaces other than those shown
034 * above.
035 * </p>
036 **/
037 public class DrivingRouteFormatter extends RouteFormatter {
038
039 // You can use this object to round floating point values to one
040 // decimal place.
041 private static final DecimalFormat formatter = new DecimalFormat("0.0");
042
043
044 /**
045 * <p>
046 * Computes a single line of a multi-line directions String that
047 * represents the instructions for traversing a single
048 * geographical feature.
049 * </p>
050 *
051 * <p>
052 * Calling <tt>computeLine</tt> with a GeoFeature instance and an
053 * initial heading should produce a newline-terminated String in
054 * the following form:
055 * </p>
056 *
057 * <p>
058 * <tt>
059 * Turn sharp left onto MacGregor Street and go 0.8 miles.<br />
060 * </tt>
061 * </p>
062 *
063 * <p>
064 * In the output above, "MacGregor Street" represents the name of
065 * the geographical feature, and "0.8 miles" is the length of the
066 * geographical feature. The length should be reported to
067 * tenth-of-a-mile precision. The String should be terminated by
068 * a newline and should include no extra spaces other than those
069 * shown above.
070 * </p>
071 *
072 * @requires 0 <= origHeading < 360
073 * @param geoFeature The geographical feature to traverse.
074 * @param origHeading The initial heading
075 * @return A newline-terminated <tt>String</tt> that gives
076 * directions on how to traverse this geographical feature.
077 **/
078 public String computeLine(GeoFeature geoFeature, double origHeading) {
079 throw new RuntimeException("Not yet implemented");
080 }
081 }