Initial data commit
This commit is contained in:
parent
72d218235f
commit
f23f22d71c
199087 changed files with 3378941 additions and 0 deletions
24
Task/Haversine-formula/D/haversine-formula-1.d
Normal file
24
Task/Haversine-formula/D/haversine-formula-1.d
Normal file
|
|
@ -0,0 +1,24 @@
|
|||
import std.stdio, std.math;
|
||||
|
||||
real haversineDistance(in real dth1, in real dph1,
|
||||
in real dth2, in real dph2)
|
||||
pure nothrow @nogc {
|
||||
enum real R = 6371;
|
||||
enum real TO_RAD = PI / 180;
|
||||
|
||||
alias imr = immutable real;
|
||||
imr ph1d = dph1 - dph2;
|
||||
imr ph1 = ph1d * TO_RAD;
|
||||
imr th1 = dth1 * TO_RAD;
|
||||
imr th2 = dth2 * TO_RAD;
|
||||
|
||||
imr dz = th1.sin - th2.sin;
|
||||
imr dx = ph1.cos * th1.cos - th2.cos;
|
||||
imr dy = ph1.sin * th1.cos;
|
||||
return asin(sqrt(dx ^^ 2 + dy ^^ 2 + dz ^^ 2) / 2) * 2 * R;
|
||||
}
|
||||
|
||||
void main() {
|
||||
writefln("Haversine distance: %.1f km",
|
||||
haversineDistance(36.12, -86.67, 33.94, -118.4));
|
||||
}
|
||||
27
Task/Haversine-formula/D/haversine-formula-2.d
Normal file
27
Task/Haversine-formula/D/haversine-formula-2.d
Normal file
|
|
@ -0,0 +1,27 @@
|
|||
import std.stdio, std.math;
|
||||
|
||||
real toRad(in real degrees) pure nothrow @safe @nogc {
|
||||
return degrees * PI / 180;
|
||||
}
|
||||
|
||||
real haversin(in real theta) pure nothrow @safe @nogc {
|
||||
return (1 - theta.cos) / 2;
|
||||
}
|
||||
|
||||
real greatCircleDistance(in real lat1, in real lng1,
|
||||
in real lat2, in real lng2,
|
||||
in real radius)
|
||||
pure nothrow @safe @nogc {
|
||||
immutable h = haversin(lat2.toRad - lat1.toRad) +
|
||||
lat1.toRad.cos * lat2.toRad.cos *
|
||||
haversin(lng2.toRad - lng1.toRad);
|
||||
return 2 * radius * h.sqrt.asin;
|
||||
}
|
||||
|
||||
void main() {
|
||||
enum real earthRadius = 6372.8L; // Average earth radius.
|
||||
|
||||
writefln("Great circle distance: %.1f km",
|
||||
greatCircleDistance(36.12, -86.67, 33.94, -118.4,
|
||||
earthRadius));
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue