diff --git a/.idea/compiler.xml b/.idea/compiler.xml index 076629ed..5d7f9ec1 100644 --- a/.idea/compiler.xml +++ b/.idea/compiler.xml @@ -1,8 +1,23 @@ + + + + + + + + + + + + - + + + + diff --git a/.idea/copyright/profiles_settings.xml b/.idea/copyright/profiles_settings.xml deleted file mode 100644 index e7bedf33..00000000 --- a/.idea/copyright/profiles_settings.xml +++ /dev/null @@ -1,3 +0,0 @@ - - - \ No newline at end of file diff --git a/src/main/java/seng302/Controllers/RaceController.java b/src/main/java/seng302/Controllers/RaceController.java index 6e09c291..a66a1964 100644 --- a/src/main/java/seng302/Controllers/RaceController.java +++ b/src/main/java/seng302/Controllers/RaceController.java @@ -2,7 +2,14 @@ package seng302.Controllers; import javafx.fxml.FXML; import javafx.scene.canvas.Canvas; +import javafx.scene.canvas.GraphicsContext; import javafx.scene.control.TableView; +import javafx.scene.layout.AnchorPane; +import javafx.scene.paint.Color; +import javafx.scene.paint.Paint; +import javafx.scene.shape.Line; +import seng302.Coordinate; +import seng302.RaceMap; import java.net.URL; import java.util.ResourceBundle; @@ -15,10 +22,60 @@ public class RaceController extends Controller{ Canvas raceMap; @FXML TableView boatInfoTable; + @FXML + AnchorPane canvasBase; + + private GraphicsContext gc; + private RaceMap map; + + public void displayBoat(Coordinate coordinate, Paint paint){ + gc.setFill(paint); + gc.fillOval(coordinate.getX(), coordinate.getY(), 15, 15); + } + public void displayLine(Coordinate coordinateA, Coordinate coordinateB, Paint paint){ + gc.setStroke(paint); + gc.setFill(paint); + gc.fillOval(coordinateA.getX() - 3, coordinateA.getY() - 3, 6, 6); + gc.fillOval(coordinateB.getX() - 3, coordinateB.getY() - 3, 6, 6); + gc.strokeLine(coordinateA.getX(), coordinateA.getY(), coordinateB.getX(), coordinateB.getY()); + } + + + public void displayPoint(Coordinate coordinate, Paint paint){ + gc.setFill(paint); + gc.fillOval(coordinate.getX(), coordinate.getY(), 10, 10); + } @Override - public void initialize(URL location, ResourceBundle resources) { + public void initialize(URL location, ResourceBundle resources) {/* + raceMap.widthProperty().bind(canvasBase.widthProperty()); + raceMap.heightProperty().bind(canvasBase.heightProperty());*/ + this.gc = raceMap.getGraphicsContext2D(); + this.map = new RaceMap(32.321989, -64.8553, 32.246, -64.831, (int)raceMap.getWidth(), (int)raceMap.getHeight()); + //boat + Coordinate boat1coord = this.map.convertGPS(32.296577, -64.854304); + displayBoat(boat1coord, Color.AQUAMARINE); + //finish line + gc.setLineWidth(2); + Coordinate finishLineCoord1 = this.map.convertGPS(32.317379, -64.839291); + Coordinate finishLineCoord2 = this.map.convertGPS(32.317257, -64.836260); + displayLine(finishLineCoord1, finishLineCoord2, Color.DARKRED); + //marks + Coordinate markCoord = this.map.convertGPS(32.293039, -64.843983); + Coordinate southGate1 = this.map.convertGPS(32.284680, -64.850045); + Coordinate southGate2 = this.map.convertGPS(32.280164, -64.847591); + Coordinate northGate1 = this.map.convertGPS(32.309693, -64.835249); + Coordinate northGate2 = this.map.convertGPS(32.308046, -64.831785); + displayBoat(boat1coord, Color.AQUAMARINE); + displayBoat(markCoord, Color.GOLD); + displayLine(southGate1, southGate2, Color.DARKCYAN); + displayLine(northGate1, northGate2, Color.DARKVIOLET); + //start line + Coordinate startline1 = this.map.convertGPS(32.296577, -64.854304); + Coordinate startline2 = this.map.convertGPS(32.293771, -64.855242); + displayLine(startline1, startline2, Color.GREEN); + displayPoint(this.map.convertGPS(32.293771, -64.855242), Color.BLACK); } } diff --git a/src/main/java/seng302/Coordinate.java b/src/main/java/seng302/Coordinate.java new file mode 100644 index 00000000..a2b19e33 --- /dev/null +++ b/src/main/java/seng302/Coordinate.java @@ -0,0 +1,19 @@ +package seng302; + +/** + * Created by cbt24 on 15/03/17. + */ +public class Coordinate { + private int x; + private int y; + + public Coordinate(int x, int y) { this.x = x; this.y = y; } + + public int getX() { + return x; + } + + public int getY() { + return y; + } +} diff --git a/src/main/java/seng302/RaceMap.java b/src/main/java/seng302/RaceMap.java new file mode 100644 index 00000000..d95598db --- /dev/null +++ b/src/main/java/seng302/RaceMap.java @@ -0,0 +1,26 @@ +package seng302; + +import java.util.ArrayList; + +/** + * Created by cbt24 on 15/03/17. + */ +public class RaceMap { + private double x1, x2, y1, y2; + private int width, height; + + public RaceMap(double x1, double y1, double x2, double y2, int width, int height) { + 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 Coordinate (pair of doubles) + * @see seng302.Coordinate + */ + public Coordinate convertGPS(double lat, double lon) { + return new Coordinate((int) (width * (lat - x1) / (x2 - x1)), (int) (height - (height * (lon - y1) / (y2 - y1)))); + } +} diff --git a/src/main/resources/scenes/racepane.fxml b/src/main/resources/scenes/racepane.fxml index 030c4252..8eaf63a6 100644 --- a/src/main/resources/scenes/racepane.fxml +++ b/src/main/resources/scenes/racepane.fxml @@ -5,14 +5,13 @@ - - + - +