You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
73 lines
2.3 KiB
73 lines
2.3 KiB
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;
|
|
}
|
|
}
|