Difference between revisions of "AppInventor: Menghitung Jarak dan Arah dari GPS"

From OnnoWiki
Jump to navigation Jump to search
 
(5 intermediate revisions by the same user not shown)
Line 13: Line 13:
  
  
==Arah Kiblat==
+
==Menghitung Jarak dengan 'Haversine' Formula==
 +
 
 +
Haversine
 +
formula:
 +
a = sin²(Δφ/2) + cos φ1 ⋅ cos φ2 ⋅ sin²(Δλ/2)
 +
        c = 2 ⋅ atan2( √a, √(1−a) )
 +
        d = R ⋅ c
 +
 
 +
where φ is latitude, λ is longitude, R is earth’s radius (mean radius = 6,371km);
 +
note that angles need to be in radians to pass to trig functions!
 +
 
 +
JavaScript:
  
  PI = Math.PI;
+
  var R = 6371000; // metres
  phiK = 21.4*PI/180.0;
+
  var φ1 = lat1.toRadians();
  lambdaK = 39.8*PI/180.0;
+
  var φ2 = lat2.toRadians();
  phi = lat*PI/180.0;
+
  var Δφ = (lat2-lat1).toRadians();
  lambda = lon*PI/180.0;
+
  var Δλ = (lon2-lon1).toRadians();
  psi = 180.0/PI*Math.atan2(Math.sin(lambdaK-lambda), Math.cos(phi)*Math.tan(phiK)-Math.sin(phi)*Math.cos(lambdaK-lambda));
+
   
  return Math.round(psi);
+
var a = Math.sin(Δφ/2) * Math.sin(Δφ/2) +
 +
        Math.cos(φ1) * Math.cos(φ2) *
 +
        Math.sin(Δλ/2) * Math.sin(Δλ/2);
 +
var c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1-a));
 +
  var d = R * c;
  
Ref: http://www.islamicsoftware.org/qibla/qibla.html
+
Ref: http://www.movable-type.co.uk/scripts/latlong.html
  
 
==Menghitung Arah==
 
==Menghitung Arah==
Line 36: Line 51:
 
  Y = cos θa * sin θb – sin θa * cos θb * cos ∆L
 
  Y = cos θa * sin θb – sin θa * cos θb * cos ∆L
  
 +
==Menghitung Arah==
  
  
 +
Formula:
 +
 +
θ = atan2( sin Δλ ⋅ cos φ2 , cos φ1 ⋅ sin φ2 − sin φ1 ⋅ cos φ2 ⋅ cos Δλ )
 +
 +
JavaScript:
 +
(all angles
 +
in radians)
 +
 +
var y = Math.sin(λ2-λ1) * Math.cos(φ2);
 +
var x = Math.cos(φ1)*Math.sin(φ2) -
 +
        Math.sin(φ1)*Math.cos(φ2)*Math.cos(λ2-λ1);
 +
var brng = Math.atan2(y, x).toDegrees();
 +
 +
==Arah Kiblat==
 +
 +
PI = 3.1415926535;
 +
phiK = 21.422507*PI/180.0;
 +
lambdaK = 39.826329*PI/180.0;
 +
phi = lat*PI/180.0;
 +
lambda = lon*PI/180.0;
 +
psi = 180.0/PI*atan2(sin(lambdaK-lambda), cos(phi)*tan(phiK)-sin(phi)*cos(lambdaK-lambda));
 +
return Math.round(psi);
 +
 +
Ref: http://www.islamicsoftware.org/qibla/qibla.html
  
 
==Referensi==
 
==Referensi==

Latest revision as of 05:42, 11 October 2015

Sumber: https://sites.google.com/site/appinventor/distance-based-on-lat-long

Menghitung Jarak

Jarak:

distance = sqrt(x^2 + y^2)

Dimana:

x = 69.1 * (lat2 - lat1)
y = 69.1 * (lon2 - lon1) * cos(lat1/57.3)


Menghitung Jarak dengan 'Haversine' Formula

Haversine formula:

	a = sin²(Δφ/2) + cos φ1 ⋅ cos φ2 ⋅ sin²(Δλ/2)
       c = 2 ⋅ atan2( √a, √(1−a) )
       d = R ⋅ c

where φ is latitude, λ is longitude, R is earth’s radius (mean radius = 6,371km); note that angles need to be in radians to pass to trig functions!

JavaScript:

var R = 6371000; // metres
var φ1 = lat1.toRadians();
var φ2 = lat2.toRadians();
var Δφ = (lat2-lat1).toRadians();
var Δλ = (lon2-lon1).toRadians();

var a = Math.sin(Δφ/2) * Math.sin(Δφ/2) +
        Math.cos(φ1) * Math.cos(φ2) *
        Math.sin(Δλ/2) * Math.sin(Δλ/2);
var c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1-a));
var d = R * c;

Ref: http://www.movable-type.co.uk/scripts/latlong.html

Menghitung Arah

Arah:

β = atan2(X,Y),

Dimana

X = cos θb * sin ∆L
Y = cos θa * sin θb – sin θa * cos θb * cos ∆L

Menghitung Arah

Formula:

θ = atan2( sin Δλ ⋅ cos φ2 , cos φ1 ⋅ sin φ2 − sin φ1 ⋅ cos φ2 ⋅ cos Δλ )

JavaScript: (all angles in radians)

var y = Math.sin(λ2-λ1) * Math.cos(φ2);
var x = Math.cos(φ1)*Math.sin(φ2) -
        Math.sin(φ1)*Math.cos(φ2)*Math.cos(λ2-λ1);
var brng = Math.atan2(y, x).toDegrees();

Arah Kiblat

PI = 3.1415926535;
phiK = 21.422507*PI/180.0;
lambdaK = 39.826329*PI/180.0;
phi = lat*PI/180.0;
lambda = lon*PI/180.0;
psi = 180.0/PI*atan2(sin(lambdaK-lambda), cos(phi)*tan(phiK)-sin(phi)*cos(lambdaK-lambda));
return Math.round(psi);

Ref: http://www.islamicsoftware.org/qibla/qibla.html

Referensi