package seng302; /** * Created by cbt24 on 15/03/17. */ public class RaceMap { private final double x1; private final double x2; private final double y1; private final double y2; private int width, height; /** * Constructor Method. * * @param x1 Longitude of the top left point. * @param y1 Latitude of the top left point. * @param x2 Longitude of the top right point. * @param y2 Latitude of the top right point. * @param width width that the Canvas the race is to be drawn on is. * @param height height that the Canvas the race is to be drawn on is. */ public RaceMap(double y1, double x1, double y2, double x2, int height, int width) { this.x1 = x1; this.x2 = x2; this.y1 = y1; this.y2 = y2; this.width = width; this.height = height; } /** * Converts GPS coordinates to coordinates for container * * @param lat GPS latitude * @param lon GPS longitude * @return GraphCoordinate (pair of doubles) * @see GraphCoordinate */ private GraphCoordinate convertGPS(double lat, double lon) { int difference = Math.abs(width - height); int size = width; if (width > height) { size = height; return new GraphCoordinate((int) ((size * (lon - x1) / (x2 - x1)) + difference / 2), (int) (size - (size * (lat - y1) / (y2 - y1)))); } else { return new GraphCoordinate((int) (size * (lon - x1) / (x2 - x1)), (int) ((size - (size * (lat - y1) / (y2 - y1))) + difference / 2)); } //return new GraphCoordinate((int) (width * (lon - x1) / (x2 - x1)), (int) (height - (height * (lat - y1) / (y2 - y1)))); } /** * Converts the GPS Coordinate to GraphCoordinates * * @param coordinate GPSCoordinate representation of Latitude and Longitude. * @return GraphCoordinate that the GPS is coordinates are to be displayed on the map. * @see GraphCoordinate * @see GPSCoordinate */ public GraphCoordinate convertGPS(GPSCoordinate coordinate) { return convertGPS(coordinate.getLatitude(), coordinate.getLongitude()); } public void setWidth(int width) { this.width = width; } public void setHeight(int height) { this.height = height; } }