- 按键认证大神
- 728264
- 3512
- 18
- 1916 朵
- 27464 个
- 1728 个
- 82980
- 2011-08-04
|
1#
t
T
发表于 2022-09-23 10:09
|
|只看楼主
计算坐标间的距离有三种方法比较常用,分别是曼哈顿距离、欧式距离和切比雪夫距离。曼哈顿距离:其原理为求两个坐标中x、y的绝对值总和。源码:- Function 求曼哈顿距离(x1, y1, x2, y2)
- 求曼哈顿距离 = Abs(x1 - x2) + Abs(y1 - y2)
- End Function
复制代码 欧式距离:其原理为勾股定理,通过两个坐标中x和y得到两条直角边长度,从而计算出距离。源码:- Function 求欧式距离(x1, y1, x2, y2)
- 求欧式距离 = Sqr(((x1 - x2) ^ 2) + ((y1 - y2) ^ 2))
- End Function
复制代码 切比雪夫距离:其原理为取两个坐标中x、y的绝对值中较大的一个作为距离。源码:- Function 求切比雪夫距离(x1, y1, x2, y2)
- Dim num1, num2
- num1 = Abs(x1 - x2)
- num2 = Abs(y1 - y2)
- If num1 > num2 Then
- 求切比雪夫距离 = num1
- Else
- 求切比雪夫距离 = num2
- End If
- End Function
复制代码 下面我们应用以上方法来计算出距离某个目标点最近的目标点坐标。调用方法:- Dim x, y, coordinates, i
- x = 123
- y = 456
- coordinates = "321,123|456,123|123,321|456,654|789,987|321,654|654,987"
- For i = 1 To 3
- TracePrint "方法"&i&":距离目标"&x&","&y&"最近的目标为"&获取离人物最近的目标(x, y, coordinates,i)
- Next
复制代码 调试结果:脚本 计算坐标间的距离.Q ,第6行:方法1:距离目标123,456最近的目标为123,321脚本 计算坐标间的距离.Q ,第6行:方法2:距离目标123,456最近的目标为123,321脚本 计算坐标间的距离.Q ,第6行:方法3:距离目标123,456最近的目标为123,321源码:以上三种方法在不同情况下的运算效率及结果可能会有差异,可根据实际情况选择合适的方法。
|