parent
187acc6960
commit
5b010cad49
@ -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<double[]> trueWindAngles = new ArrayList<double[]>();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 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;
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,7 @@
|
|||||||
|
package seng302.Model;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Created by hba56 on 10/05/17.
|
||||||
|
*/
|
||||||
|
public class PolarTest {
|
||||||
|
}
|
||||||
Loading…
Reference in new issue