Question by
DonkeyMalonkey · Jul 18, 2016 at 06:12 AM ·
calculationcalculations
Wrong result although code should be correct.
Hello, I have this little project here which actually seems quite simple. I have to calculate the destination, given start point, distance and bearing. I have done some research and found this:
With the same values my programm spits this out:
My programm-code:
import UnityEngine.UI;
//INPUT STRINGS
var input1 : String;
var input2 : String;
var input3 : String;
var input4 : String;
//INPUT FIELDS
var inputF1 : InputField; //input Field 1
var inputF2 : InputField; //__""__ 2
var inputF3 : InputField; //...
var inputF4 : InputField; //...
var result : Text;
private final var R : float = 6371000; //Earth's radius in metre
//INPUT VARIABLES
var d : float; //distance to travel
var a1 : float; //latitude in dezimals
var b1 : float; //longitude in dezimals
var brng : float; //Angle you are going to
function Start () {
}
function Update () {
}
//
//BUTTON FUNCTIONS
//
function ExitButton(){
Application.Quit();
}
function InputF1(){
input1 = inputF1.text;
}
function InputF2(){
input2 = inputF2.text;
}
function InputF3(){
input3 = inputF3.text;
}
function InputF4(){
input4 = inputF4.text;
}
function Calc(){
d = float.Parse(input3);
a1 = float.Parse(input1);
b1 = float.Parse(input2);
brng = float.Parse(input4);
brng = brng * Mathf.Deg2Rad;
a1 = a1 * Mathf.Deg2Rad;
b1 = b1 * Mathf.Deg2Rad;
var a2 : float = Mathf.Asin( Mathf.Sin(a1)*Mathf.Cos(d/R) +
Mathf.Cos(a1)*Mathf.Sin(d/R)*Mathf.Cos(brng) );
var b2 : float = b1 + Mathf.Atan2(Mathf.Sin(brng)*Mathf.Sin(d/R)*Mathf.Cos(a1),
Mathf.Cos(d/R)-Mathf.Sin(a1)*Mathf.Sin(a2));
result.text = a2 * Mathf.Rad2Deg+"°N "+b2 * Mathf.Rad2Deg+"°W ";
}
//
//BUTTON FUNCTIONS END
//
My input is the same and strangely the first value (a2 in my script), latitude is always exactly right. The longitude however is always off by quite a bit. I have compared the two scripts over and over again. I just can´t figure out what the problem is.
I am not asking for any scripts, but some help would be awesome! Anything that I could have missed?
Anyways, thanks for the help in advance!
Comment