简单的VB函数可计算两点之间的距离

Public Function DistanceBetween(ByVal X1 As Single, ByVal Y1 As Single, ByVal X2 As Single, ByVal Y2 As Single) As Single
  ' Calculate the distance between two points, given their X/Y coordinates. 
  ' The short version...
  DistanceBetween = Sqr((Abs(X2 - X1) ^ 2) + (Abs(Y2 - Y1) ^ 2)) 
  ' The longer version, to illustrate how it works...
  Dim Horizontal As Single, Vertical As Single
  Horizontal = Abs(X2 - X1)
  Vertical = Abs(Y2 - Y1)
  DistanceBetween = Sqr((Horizontal * Horizontal) + (Vertical * Vertical))
End Function

From: https://bytes.com/topic/visual-basic/insights/666086-simple-vb-function-calculate-distance-between-two-points

VB计算经纬度距离可以使用地球上的球面距离公式,该公式基于经纬度之间的夹角和地球半径进行计算。以下是一个用于计算经纬度距离VB函数的示例: ```vb ' 计算弧度 Public Function ToRadians(ByVal degrees As Double) As Double ToRadians = degrees * Math.PI / 180 End Function ' 计算经纬度距离 Public Function GetDistance(ByVal latitude1 As Double, ByVal longitude1 As Double, ByVal latitude2 As Double, ByVal longitude2 As Double) As Double Dim earthRadius As Double = 6371.0 '地球半径,单位为公里 Dim lat1 As Double = ToRadians(latitude1) Dim lon1 As Double = ToRadians(longitude1) Dim lat2 As Double = ToRadians(latitude2) Dim lon2 As Double = ToRadians(longitude2) ' 使用Haversine公式计算距离 Dim dlon As Double = lon2 - lon1 Dim dlat As Double = lat2 - lat1 Dim a As Double = Math.Sin(dlat / 2) * Math.Sin(dlat / 2) + Math.Cos(lat1) * Math.Cos(lat2) * Math.Sin(dlon / 2) * Math.Sin(dlon / 2) Dim c As Double = 2 * Math.Atan2(Math.Sqrt(a), Math.Sqrt(1 - a)) Dim distance As Double = earthRadius * c GetDistance = distance End Function ``` 使用上述函数,可以计算两个经纬度坐标之间距离。其中`latitude1`和`longitude1`表示第一个坐标点的纬度和经度,`latitude2`和`longitude2`表示第二个坐标点的纬度和经度。函数返回的距离单位为公里。 例如,计算北京(39.9042°N,116.4074°E)和上海(31.2304°N,121.4737°E)之间距离: ```vb Dim distance As Double = GetDistance(39.9042, 116.4074, 31.2304, 121.4737) Console.WriteLine("距离为:" & distance & "公里") ``` 运行结果为:距离为:1068.99公里。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值