16 #region Instance Variables
19 private Vector2 _localOrigin = Vector2.zero;
20 private float _LatOrigin {
get{
return _localOrigin.x; }}
21 private float _LonOrigin {
get{
return _localOrigin.y; }}
22 private float MaxLongitude = 180f;
23 private float MaxLatitude = 90f;
25 private float metersPerLat;
26 private float metersPerLon;
35 rb = GameObject.Find(CommonFunctions.ActiveAirplane).GetComponent<Rigidbody>();
38 #region Instance Functions
39 public void FindMetersPerLat(
float lat)
49 lat = lat * Mathf.Deg2Rad;
52 metersPerLat = m1 + (m2 * Mathf.Cos(2 * (
float)lat)) + (m3 * Mathf.Cos(4 * (
float)lat)) + (m4 * Mathf.Cos(6 * (
float)lat));
53 metersPerLon = (p1 * Mathf.Cos((
float)lat)) + (p2 * Mathf.Cos(3 * (
float)lat)) + (p3 * Mathf.Cos(5 * (
float)lat));
56 public Vector3 ConvertGPStoUCS(Vector2 gps)
58 FindMetersPerLat(_LatOrigin);
59 float zPosition = metersPerLat * (gps.x - _LatOrigin);
60 float xPosition = metersPerLon * (gps.y - _LonOrigin);
61 return new Vector3((
float)xPosition, 0, (
float)zPosition);
64 public Vector2 ConvertUCStoGPS(Vector3 position)
66 FindMetersPerLat(_LatOrigin);
67 Vector2 geoLocation =
new Vector2(0,0);
68 geoLocation.x = (_LatOrigin + (position.z)/metersPerLat);
69 geoLocation.y = (_LonOrigin + (position.x)/metersPerLon);
80 Vector3 currentLocation = rb.position;
81 Vector2 latlong = ConvertUCStoGPS(currentLocation);
83 float normalizedLatitude = latlong.x/MaxLatitude;
84 float normalizedLongitude = latlong.y/MaxLongitude;
86 StaticOutputSchema.Latitude = normalizedLatitude;
87 StaticOutputSchema.Longitude = normalizedLongitude;