Added heading from each event that the boat is heading towards.
This commit is contained in:
Generated
+1
-1
@@ -45,7 +45,7 @@
|
|||||||
</list>
|
</list>
|
||||||
</option>
|
</option>
|
||||||
</component>
|
</component>
|
||||||
<component name="ProjectRootManager" version="2" languageLevel="JDK_1_3" default="false">
|
<component name="ProjectRootManager" version="2" languageLevel="JDK_1_3" default="false" project-jdk-name="1.8 (1)" project-jdk-type="JavaSDK">
|
||||||
<output url="file://$PROJECT_DIR$/out" />
|
<output url="file://$PROJECT_DIR$/out" />
|
||||||
</component>
|
</component>
|
||||||
<component name="SvnConfiguration">
|
<component name="SvnConfiguration">
|
||||||
|
|||||||
@@ -19,12 +19,12 @@ public class App
|
|||||||
Boat boat5 = new Boat("Land Rover BAR", 10);
|
Boat boat5 = new Boat("Land Rover BAR", 10);
|
||||||
Boat boat6 = new Boat("SoftBank Team Japan", 9);
|
Boat boat6 = new Boat("SoftBank Team Japan", 9);
|
||||||
|
|
||||||
RaceMarker mark1 = new RaceMarker("Start", 0);
|
RaceMarker mark1 = new RaceMarker("Start", 0, 0, 0);
|
||||||
RaceMarker mark2 = new RaceMarker("Mark", 120);
|
RaceMarker mark2 = new RaceMarker("Mark", 120, 120, 0);
|
||||||
RaceMarker mark3 = new RaceMarker("Leeward Gate", 240);
|
RaceMarker mark3 = new RaceMarker("Leeward Gate", 240, 240, 0);
|
||||||
RaceMarker mark4 = new RaceMarker("Windward Gate", 360);
|
RaceMarker mark4 = new RaceMarker("Windward Gate", 360, 240, 120);
|
||||||
RaceMarker mark5 = new RaceMarker("Leeward Gate", 480);
|
RaceMarker mark5 = new RaceMarker("Leeward Gate", 480, 240, 0);
|
||||||
RaceMarker mark6 = new RaceMarker("Finish", 600);
|
RaceMarker mark6 = new RaceMarker("Finish", 600, 360, 0);
|
||||||
|
|
||||||
Boat[] all_boats = {boat1, boat2, boat3, boat4, boat5, boat6};
|
Boat[] all_boats = {boat1, boat2, boat3, boat4, boat5, boat6};
|
||||||
Boat[] boats = {all_boats[0], all_boats[1]};
|
Boat[] boats = {all_boats[0], all_boats[1]};
|
||||||
|
|||||||
@@ -13,8 +13,13 @@ public class ConstantVelocityRace extends Race {
|
|||||||
|
|
||||||
private void generateRace() {
|
private void generateRace() {
|
||||||
for(Boat boat : boats) {
|
for(Boat boat : boats) {
|
||||||
for(RaceMarker raceMarker : marks) {
|
for(int i = 0; i < marks.length; i++) {
|
||||||
events.add(new Event(raceMarker, boat, (int)(raceMarker.getDistance() / boat.getVelocity())));
|
RaceMarker raceMarker = marks[i];
|
||||||
|
if (i != marks.length - 1) {
|
||||||
|
events.add(new Event(raceMarker, boat, (int) (raceMarker.getDistance() / boat.getVelocity()), marks[i + 1]));
|
||||||
|
} else {
|
||||||
|
events.add(new Event(raceMarker, boat, (int) (raceMarker.getDistance() / boat.getVelocity())));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Collections.sort(events, (o1, o2) -> o1.getTime() - o2.getTime());
|
Collections.sort(events, (o1, o2) -> o1.getTime() - o2.getTime());
|
||||||
|
|||||||
@@ -11,6 +11,7 @@ public class Event {
|
|||||||
private RaceMarker raceMarker;
|
private RaceMarker raceMarker;
|
||||||
private Boat boat;
|
private Boat boat;
|
||||||
private int time;
|
private int time;
|
||||||
|
private RaceMarker goalMarker;
|
||||||
|
|
||||||
public Event(RaceMarker raceMarker, Boat boat, int time){
|
public Event(RaceMarker raceMarker, Boat boat, int time){
|
||||||
this.raceMarker = raceMarker;
|
this.raceMarker = raceMarker;
|
||||||
@@ -18,6 +19,19 @@ public class Event {
|
|||||||
this.time = time;
|
this.time = time;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public Event(RaceMarker raceMarker, Boat boat, int time, RaceMarker goalMarker){
|
||||||
|
this.raceMarker = raceMarker;
|
||||||
|
this.boat = boat;
|
||||||
|
this.time = time;
|
||||||
|
this.goalMarker = goalMarker;
|
||||||
|
}
|
||||||
|
|
||||||
|
public double calculateHeading(){
|
||||||
|
//to be changed to cooridinates when used to match reality.
|
||||||
|
double thetaHat = Math.atan2((goalMarker.getLatitude() - raceMarker.getLatitude()), (goalMarker.getLongitude() - raceMarker.getLongitude()));
|
||||||
|
return thetaHat >= 0 ? Math.toDegrees(thetaHat): Math.toDegrees(thetaHat + 2 * Math.PI);
|
||||||
|
}
|
||||||
|
|
||||||
public void setTime(int time){
|
public void setTime(int time){
|
||||||
this.time = time;
|
this.time = time;
|
||||||
}
|
}
|
||||||
@@ -27,6 +41,11 @@ public class Event {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public String toString() {
|
public String toString() {
|
||||||
return boat.getName() + " passed " + raceMarker.toString() + " at " + time + " seconds.";
|
String stringToReturn = boat.getName() + " passed " + raceMarker.toString() + " at " + time + " seconds";
|
||||||
|
if (goalMarker != null){
|
||||||
|
stringToReturn += " at heading " + calculateHeading();
|
||||||
|
}
|
||||||
|
stringToReturn += ".";
|
||||||
|
return stringToReturn;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -6,16 +6,28 @@ package seng302;
|
|||||||
public class RaceMarker {
|
public class RaceMarker {
|
||||||
String name;
|
String name;
|
||||||
double distance;
|
double distance;
|
||||||
|
double latitude;
|
||||||
|
double longitude;
|
||||||
|
|
||||||
public RaceMarker(String name, double distance) {
|
public RaceMarker(String name, double distance, double latitude, double longitude) {
|
||||||
this.name = name;
|
this.name = name;
|
||||||
this.distance = distance;
|
this.distance = distance;
|
||||||
|
this.latitude = latitude;
|
||||||
|
this.longitude = longitude;
|
||||||
}
|
}
|
||||||
|
|
||||||
public double getDistance() {
|
public double getDistance() {
|
||||||
return distance;
|
return distance;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public double getLatitude() {
|
||||||
|
return latitude;
|
||||||
|
}
|
||||||
|
|
||||||
|
public double getLongitude() {
|
||||||
|
return longitude;
|
||||||
|
}
|
||||||
|
|
||||||
public String toString() {
|
public String toString() {
|
||||||
return name;
|
return name;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -15,7 +15,7 @@ public class RandomisedRace extends Race {
|
|||||||
private void generateRace() {
|
private void generateRace() {
|
||||||
Random rand = new Random();
|
Random rand = new Random();
|
||||||
for (Boat boat: this.boats){
|
for (Boat boat: this.boats){
|
||||||
events.add(new Event(new RaceMarker("Start", 0), boat, 0));
|
events.add(new Event(new RaceMarker("Start", 0, 0, 0), boat, 0));
|
||||||
int prevTime = 0;
|
int prevTime = 0;
|
||||||
for (RaceMarker raceMarker: marks){
|
for (RaceMarker raceMarker: marks){
|
||||||
int time = rand.nextInt(12) + 6;
|
int time = rand.nextInt(12) + 6;
|
||||||
|
|||||||
Reference in New Issue
Block a user