2经度c#验证

本文关键字:验证 经度 | 更新日期: 2023-09-27 18:13:17

我有两个经度。我们将它们称为经度A和经度B。经度A必须始终在经度B的以西。给定它们都是在-180和180之间的有效值,我如何使用c#创建一个验证例程来测试A是否在B的以西,而A永远不会与B相同?本初子午线和180/-180的天平把我搞糊涂了。

感谢马特

2经度c#验证

在海上航行中,如果经度差为负,则认为第一个经度更靠西。但是,当差值的绝对值大于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;
}
//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.");
}

假设我没有倒退或什么