2经度c#验证
本文关键字:验证 经度 | 更新日期: 2023-09-27 18:13:17
我有两个经度。我们将它们称为经度A和经度B。经度A必须始终在经度B的以西。给定它们都是在-180和180之间的有效值,我如何使用c#创建一个验证例程来测试A是否在B的以西,而A永远不会与B相同?本初子午线和180/-180的天平把我搞糊涂了。
感谢马特在海上航行中,如果经度差为负,则认为第一个经度更靠西。但是,当差值的绝对值大于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.");
}
假设我没有倒退或什么