diff --git a/mock/src/main/java/seng302/Model/Polar.java b/mock/src/main/java/seng302/Model/Polar.java new file mode 100644 index 00000000..805c1f78 --- /dev/null +++ b/mock/src/main/java/seng302/Model/Polar.java @@ -0,0 +1,330 @@ +package seng302.Model; + +import java.lang.reflect.Array; +import java.util.ArrayList; + +import static java.lang.Math.abs; +import static java.lang.Math.cos; + +/** + * Created by hba56 on 10/05/17. + */ +public class Polar { + private Integer trueWindSpeed; + + private Integer upTrueWindAngel; + private Integer upBoatSpeed; + + private Integer downTrueWindAngle; + private Integer downBoatSpeed; + + private Integer trueWindAngle0; + private Integer boatSpeed0; + private Integer trueWindAngle1; + private Integer boatSpeed1; + private Integer trueWindAngle2; + private Integer boatSpeed2; + private Integer trueWindAngle3; + private Integer boatSpeed3; + private Integer trueWindAngle4; + private Integer boatSpeed4; + private Integer trueWindAngle5; + private Integer boatSpeed5; + private Integer trueWindAngle6; + private Integer boatSpeed6; + private Integer trueWindAngle7; + private Integer boatSpeed7; + + private ArrayList trueWindAngles = new ArrayList(); + + /** + * constructor for a single boat polar + * @param trueWindSpeed the true wind angle to the boat + * @param upTrueWindAngel the true up wind angle + * @param upBoatSpeed the boat speed for up wind + * @param downTrueWindAngle the true down wind angle + * @param downBoatSpeed the boat speed for down wind + * @param trueWindAngle0 the true wind angle option 0 + * @param boatSpeed0 the boat speed for option 0 + * @param trueWindAngle1 the true wind angle option 0 + * @param boatSpeed1 the boat speed for option 0 + * @param trueWindAngle2 the true wind angle option 0 + * @param boatSpeed2 the boat speed for option 0 + * @param trueWindAngle3 the true wind angle option 0 + * @param boatSpeed3 the boat speed for option 0 + * @param trueWindAngle4 the true wind angle option 0 + * @param boatSpeed4 the boat speed for option 0 + * @param trueWindAngle5 the true wind angle option 0 + * @param boatSpeed5 the boat speed for option 0 + * @param trueWindAngle6 the true wind angle option 0 + * @param boatSpeed6 the boat speed for option 0 + * @param trueWindAngle7 the true wind angle option 0 + * @param boatSpeed7 the boat speed for option 0 + */ + public Polar(Integer trueWindSpeed, Integer upTrueWindAngel, Integer upBoatSpeed, Integer downTrueWindAngle, + Integer downBoatSpeed, Integer trueWindAngle0, Integer boatSpeed0, Integer trueWindAngle1, + Integer boatSpeed1, Integer trueWindAngle2, Integer boatSpeed2, Integer trueWindAngle3, + Integer boatSpeed3, Integer trueWindAngle4, Integer boatSpeed4, Integer trueWindAngle5, + Integer boatSpeed5, Integer trueWindAngle6, Integer boatSpeed6, Integer trueWindAngle7, + Integer boatSpeed7) { + this.trueWindSpeed = trueWindSpeed; + this.upTrueWindAngel = upTrueWindAngel; + this.upBoatSpeed = upBoatSpeed; + this.downTrueWindAngle = downTrueWindAngle; + this.downBoatSpeed = downBoatSpeed; + this.trueWindAngle0 = trueWindAngle0; + this.boatSpeed0 = boatSpeed0; + this.trueWindAngle1 = trueWindAngle1; + this.boatSpeed1 = boatSpeed1; + this.trueWindAngle2 = trueWindAngle2; + this.boatSpeed2 = boatSpeed2; + this.trueWindAngle3 = trueWindAngle3; + this.boatSpeed3 = boatSpeed3; + this.trueWindAngle4 = trueWindAngle4; + this.boatSpeed4 = boatSpeed4; + this.trueWindAngle5 = trueWindAngle5; + this.boatSpeed5 = boatSpeed5; + this.trueWindAngle6 = trueWindAngle6; + this.boatSpeed6 = boatSpeed6; + this.trueWindAngle7 = trueWindAngle7; + this.boatSpeed7 = boatSpeed7; + + double[] option0 = new double[2]; + option0[0] = trueWindAngle0; + option0[1] = boatSpeed0; + + double[] option1 = new double[2]; + option1[0] = trueWindAngle1; + option1[1] = boatSpeed1; + + double[] option2 = new double[2]; + option2[0] = trueWindAngle2; + option2[1] = boatSpeed2; + + double[] option3 = new double[2]; + option3[0] = trueWindAngle3; + option3[1] = boatSpeed3; + + double[] option4 = new double[2]; + option4[0] = trueWindAngle4; + option4[1] = boatSpeed4; + + double[] option5 = new double[2]; + option5[0] = trueWindAngle5; + option5[1] = boatSpeed5; + + double[] option6 = new double[2]; + option6[0] = trueWindAngle6; + option6[1] = boatSpeed6; + + double[] option7 = new double[2]; + option7[0] = trueWindAngle7; + option7[1] = boatSpeed7; + + + this.trueWindAngles.add(option0); + this.trueWindAngles.add(option1); + this.trueWindAngles.add(option2); + this.trueWindAngles.add(option3); + this.trueWindAngles.add(option4); + this.trueWindAngles.add(option5); + this.trueWindAngles.add(option6); + this.trueWindAngles.add(option7); + } + + /** + * + * @param angleToDestination + * @param angleOfWind + * @return + */ + public double getBestHeading(double angleToDestination, double angleOfWind){ + double vmg = 0; + double vmgTemp = 0; + + double[] bestOption = null; + + for(double[] option: this.trueWindAngles) { + double angle = option[0] - angleToDestination; + vmgTemp = cos(angle)*option[1]; + + if(bestOption == null){ + vmg = vmgTemp; + bestOption = option; + }else if (vmgTemp > vmg){ + vmg = vmgTemp; + bestOption = option; + } + } + + return bestOption[0]; + } + + public Integer getTrueWindSpeed() { + return trueWindSpeed; + } + + public void setTrueWindSpeed(Integer trueWindSpeed) { + this.trueWindSpeed = trueWindSpeed; + } + + public Integer getUpTrueWindAngel() { + return upTrueWindAngel; + } + + public void setUpTrueWindAngel(Integer upTrueWindAngel) { + this.upTrueWindAngel = upTrueWindAngel; + } + + public Integer getUpBoatSpeed() { + return upBoatSpeed; + } + + public void setUpBoatSpeed(Integer upBoatSpeed) { + this.upBoatSpeed = upBoatSpeed; + } + + public Integer getDownTrueWindAngle() { + return downTrueWindAngle; + } + + public void setDownTrueWindAngle(Integer downTrueWindAngle) { + this.downTrueWindAngle = downTrueWindAngle; + } + + public Integer getDownBoatSpeed() { + return downBoatSpeed; + } + + public void setDownBoatSpeed(Integer downBoatSpeed) { + this.downBoatSpeed = downBoatSpeed; + } + + public Integer getTrueWindAngle0() { + return trueWindAngle0; + } + + public void setTrueWindAngle0(Integer trueWindAngle0) { + this.trueWindAngle0 = trueWindAngle0; + } + + public Integer getBoatSpeed0() { + return boatSpeed0; + } + + public void setBoatSpeed0(Integer boatSpeed0) { + this.boatSpeed0 = boatSpeed0; + } + + public Integer getTrueWindAngle1() { + return trueWindAngle1; + } + + public void setTrueWindAngle1(Integer trueWindAngle1) { + this.trueWindAngle1 = trueWindAngle1; + } + + public Integer getBoatSpeed1() { + return boatSpeed1; + } + + public void setBoatSpeed1(Integer boatSpeed1) { + this.boatSpeed1 = boatSpeed1; + } + + public Integer getTrueWindAngle2() { + return trueWindAngle2; + } + + public void setTrueWindAngle2(Integer trueWindAngle2) { + this.trueWindAngle2 = trueWindAngle2; + } + + public Integer getBoatSpeed2() { + return boatSpeed2; + } + + public void setBoatSpeed2(Integer boatSpeed2) { + this.boatSpeed2 = boatSpeed2; + } + + public Integer getTrueWindAngle3() { + return trueWindAngle3; + } + + public void setTrueWindAngle3(Integer trueWindAngle3) { + this.trueWindAngle3 = trueWindAngle3; + } + + public Integer getBoatSpeed3() { + return boatSpeed3; + } + + public void setBoatSpeed3(Integer boatSpeed3) { + this.boatSpeed3 = boatSpeed3; + } + + public Integer getTrueWindAngle4() { + return trueWindAngle4; + } + + public void setTrueWindAngle4(Integer trueWindAngle4) { + this.trueWindAngle4 = trueWindAngle4; + } + + public Integer getBoatSpeed4() { + return boatSpeed4; + } + + public void setBoatSpeed4(Integer boatSpeed4) { + this.boatSpeed4 = boatSpeed4; + } + + public Integer getTrueWindAngle5() { + return trueWindAngle5; + } + + public void setTrueWindAngle5(Integer trueWindAngle5) { + this.trueWindAngle5 = trueWindAngle5; + } + + public Integer getBoatSpeed5() { + return boatSpeed5; + } + + public void setBoatSpeed5(Integer boatSpeed5) { + this.boatSpeed5 = boatSpeed5; + } + + public Integer getTrueWindAngle6() { + return trueWindAngle6; + } + + public void setTrueWindAngle6(Integer trueWindAngle6) { + this.trueWindAngle6 = trueWindAngle6; + } + + public Integer getBoatSpeed6() { + return boatSpeed6; + } + + public void setBoatSpeed6(Integer boatSpeed6) { + this.boatSpeed6 = boatSpeed6; + } + + public Integer getTrueWindAngle7() { + return trueWindAngle7; + } + + public void setTrueWindAngle7(Integer trueWindAngle7) { + this.trueWindAngle7 = trueWindAngle7; + } + + public Integer getBoatSpeed7() { + return boatSpeed7; + } + + public void setBoatSpeed7(Integer boatSpeed7) { + this.boatSpeed7 = boatSpeed7; + } +} diff --git a/mock/src/test/java/seng302/Model/PolarTest.java b/mock/src/test/java/seng302/Model/PolarTest.java new file mode 100644 index 00000000..c76d0bfb --- /dev/null +++ b/mock/src/test/java/seng302/Model/PolarTest.java @@ -0,0 +1,7 @@ +package seng302.Model; + +/** + * Created by hba56 on 10/05/17. + */ +public class PolarTest { +}