24 lines
516 B
Plaintext
24 lines
516 B
Plaintext
def pi: 3.14159265;
|
|
def radians: (. * pi) / 180;
|
|
def unradians: (. * 180) / pi;
|
|
|
|
def cartesian: (.latitude | radians) as $lat | (.longitude | radians) as $lon | {
|
|
x: (($lat | cos) * ($lon | cos)),
|
|
y: (($lat | cos) * ($lon | sin)),
|
|
z: ($lat | sin)
|
|
};
|
|
|
|
def average: add / length;
|
|
|
|
map(cartesian)
|
|
| {
|
|
x: map(.x) | average,
|
|
y: map(.y) | average,
|
|
z: map(.z) | average
|
|
}
|
|
| ((.x * .x + .y * .y) | sqrt) as $hypotenuse
|
|
| {
|
|
longitude: atan2(.y; .x) | unradians,
|
|
latitude: atan2(.z; $hypotenuse) | unradians
|
|
}
|