Merge remote-tracking branch 'origin/master' into story_61
# Conflicts: # racevisionGame/src/main/java/mock/model/MockRace.java # racevisionGame/src/main/java/mock/model/commandFactory/CommandFactory.java # racevisionGame/src/main/java/visualiser/gameController/ControllerClient.java # racevisionGame/src/main/java/visualiser/gameController/ControllerServer.java # racevisionGame/src/main/resources/visualiser/scenes/race.fxml
This commit is contained in:
@@ -2,34 +2,49 @@ package mock.model.commandFactory;
|
||||
|
||||
import mock.model.MockBoat;
|
||||
import mock.model.MockRace;
|
||||
import shared.model.Bearing;
|
||||
|
||||
/**
|
||||
* Created by David on 2/08/2017.
|
||||
* Command class for tacking and gybing
|
||||
*/
|
||||
public class TackGybeCommand implements Command {
|
||||
private MockRace race;
|
||||
private MockBoat boat;
|
||||
|
||||
/**
|
||||
* Constructor for class
|
||||
* @param race mock race
|
||||
* @param boat mock boat to update
|
||||
*/
|
||||
public TackGybeCommand(MockRace race, MockBoat boat) {
|
||||
this.race = race;
|
||||
this.boat = boat;
|
||||
}
|
||||
|
||||
//The refactoring of MockRace will require changes to be made
|
||||
@Override
|
||||
public void execute() {
|
||||
|
||||
boat.setAutoVMG(false);
|
||||
|
||||
/*VMG newVMG = boat.getPolars().calculateVMG(
|
||||
race.getWindDirection(),
|
||||
race.getWindSpeed(),
|
||||
boat.calculateBearingToNextMarker(),
|
||||
Bearing.fromDegrees(0d),
|
||||
Bearing.fromDegrees(359.99999d));
|
||||
VMG boatVMG = new VMG(boat.getCurrentSpeed(), boat.getBearing());
|
||||
if(race.improvesVelocity(boatVMG, newVMG, boat.calculateBearingToNextMarker())){
|
||||
boat.setVMG(newVMG);
|
||||
}*/
|
||||
double boatAngle = boat.getBearing().degrees();
|
||||
double windAngle =race.getWindDirection().degrees();
|
||||
double differenceAngle = calcDistance(boatAngle, windAngle);
|
||||
double angleA = windAngle + differenceAngle;
|
||||
double angleB = windAngle - differenceAngle;
|
||||
if(angleA % 360 == boatAngle){
|
||||
boat.setBearing(Bearing.fromDegrees(angleB));
|
||||
} else {
|
||||
boat.setBearing(Bearing.fromDegrees(angleA));
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Method to calculate smallest angle between 2 angles
|
||||
* @param degreeA first angle degree
|
||||
* @param degreeB second angle degree
|
||||
* @return the calculated smallest angle
|
||||
*/
|
||||
public double calcDistance(double degreeA, double degreeB){
|
||||
double phi = Math.abs(degreeB - degreeA) % 360;
|
||||
return phi > 180 ? 360 - phi : phi;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -4,27 +4,30 @@ import mock.model.MockBoat;
|
||||
import mock.model.MockRace;
|
||||
|
||||
/**
|
||||
* Created by David on 2/08/2017.
|
||||
* Command class for autoVMG
|
||||
*/
|
||||
public class VMGCommand implements Command {
|
||||
private MockRace race;
|
||||
private MockBoat boat;
|
||||
|
||||
/**
|
||||
* Constructor for class
|
||||
* @param race mock race
|
||||
* @param boat mock boat to update
|
||||
*/
|
||||
public VMGCommand(MockRace race, MockBoat boat) {
|
||||
this.race = race;
|
||||
this.boat = boat;
|
||||
}
|
||||
|
||||
//The refactoring of MockRace will require changes to be made
|
||||
@Override
|
||||
public void execute() {
|
||||
boat.setAutoVMG(true);
|
||||
/*VMG newVMG = boat.getPolars().calculateVMG(
|
||||
race.getWindDirection(),
|
||||
race.getWindSpeed(),
|
||||
boat.calculateBearingToNextMarker(),
|
||||
Bearing.fromDegrees(0d),
|
||||
Bearing.fromDegrees(359.99999d));
|
||||
boat.setVMG(newVMG);*/
|
||||
if (boat.getAutoVMG()){
|
||||
boat.setAutoVMG(false);
|
||||
System.out.println("Auto VMG off!");
|
||||
} else {
|
||||
boat.setAutoVMG(true);
|
||||
System.out.println("Auto VMG on!");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user