Расчет от градусов до десятичной и обратной формулы - PullRequest
0 голосов
/ 07 марта 2020

Формула для преобразования из Градусов в Десятичные:

Decimal= SIGN* Degrees+(Dec. Degrees)/60

Где, если SIGN = Юг или Запад, то SIGN = -1

Но если у меня есть Десятичное значение, как я могу Я получил ЗНАК, Степени и De c. Значения в градусах?

Например, если Decimal = 50 и De c. Степени = 90, я получил результат 51,5

 51.5 = 50 + 90/60

Но, пытаясь вычислить обратное, я получил формулу:

 51.5 = X1+ X2/60

Не могу поймать, как получить 2 переменные X1 и X2?

Спасибо!

1 Ответ

1 голос
/ 07 марта 2020

Я предполагаю, что вы хотите преобразовать из Decimal Degrees (DD) в Degrees,Minutes,Seconds (DMS) и наоборот.

// Decimal Degrees to Degrees,Minutes,Seconds
D = floor(DD);
M = floor((DD - D) * 60);
S = round((DD - D - M/60) * 3600);

// Degrees,Minutes,Seconds to Decimal Degrees
DD = D + M/60 + S/3600;

// calculations for your case above
DD = 51.5
D = floor(51.5) => D = 51
M = floor((51.5 - 51) * 60) => M = floor(0.5 * 60) => M = 30 
S = round((51.5 - 51 - 30/60) * 3600) => S = 0
// so 51.5 DD = 51° 30' 0'' DMS

Если вы хотите сохранить десятичную часть в течение нескольких секунд (например, 32.15 вместо 32), также вам просто нужно удалить вызов round.

РЕДАКТИРОВАТЬ:
Относительно ваших значений выше 90 минут на самом деле 1 градус и 30 минут .
Вы можете самостоятельно проверить расчеты на этой странице

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...