2 проверки долготы C # - PullRequest
       0

2 проверки долготы C #

0 голосов
/ 03 ноября 2011

У меня есть две долготы.Мы назовем их долготой A и B. Долгота A всегда должна быть к западу от долготы B. Учитывая, что оба являются допустимыми значениями между -180 и 180, как я могу создать подпрограмму проверки с использованием C #, чтобы проверить, находится ли A к западу от B иA никогда не бывает таким же, как B?Меридиан и нотация 180 / -180 сбивают меня с толку.

Спасибо

Мэтт

Ответы [ 2 ]

2 голосов
/ 03 ноября 2011

В морской навигации, если разность долгот отрицательна, первая долгота считается более западнойОднако, когда абсолютное значение разности больше 180, значение уменьшается от 360, и знак отменяется.Таким образом

bool IsMoreWest(double longitudeA, double logitudeB)
{
    double difference = longitudeA - logitudeB;
    if (Math.Abs(difference) > 180.0) {
        difference = -Math.Sign(difference) * (360.0 - Math.Abs(difference));
    }
    return difference < 0;
}
1 голос
/ 03 ноября 2011
//minutes and seconds to right of . for simplicity
public void Validate(Decimal dLongitudeA, Decimal dLongitudeB)
{
    if( (dLongitudeB + 360 - dLongitudeA) % 360 < 180 )
       throw new ApplicationException("Validation Failed.");
}

Предполагая, что я не отсталый или что-то ...

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