• 按键公众号 :
按键精灵电脑版
立即下载

软件版本:2014.06
软件大小:22.9M
更新时间:2021-12-03

按键精灵安卓版
立即下载

软件版本:3.7.2
软件大小:46.2M
更新时间:2023-05-10

按键精灵iOS版
立即下载

软件版本:1.8.0
软件大小:29.2M
更新时间:2023-03-21

按键手机助手
立即下载

软件版本:3.8.0
软件大小:262M
更新时间:2023-05-30

快捷导航

登录 后使用快捷导航
没有帐号? 注册

发新话题 回复该主题

[昨夜星辰] 【源码】计算坐标间的距离 [复制链接]

1#
计算坐标间的距离有三种方法比较常用,分别是曼哈顿距离欧式距离切比雪夫距离
曼哈顿距离:
其原理为求两个坐标中x、y的绝对值总和。
源码:
  1. Function 求曼哈顿距离(x1, y1, x2, y2)
  2. 求曼哈顿距离 = Abs(x1 - x2) + Abs(y1 - y2)
  3. End Function
复制代码
欧式距离:
其原理为勾股定理,通过两个坐标中x和y得到两条直角边长度,从而计算出距离。
源码:
  1. Function 求欧式距离(x1, y1, x2, y2)
  2. 求欧式距离 = Sqr(((x1 - x2) ^ 2) + ((y1 - y2) ^ 2))
  3. End Function
复制代码
切比雪夫距离:
其原理为取两个坐标中x、y的绝对值中较大的一个作为距离。
源码:
  1. Function 求切比雪夫距离(x1, y1, x2, y2)
  2. Dim num1, num2
  3. num1 = Abs(x1 - x2)
  4. num2 = Abs(y1 - y2)
  5. If num1 > num2 Then
  6. 求切比雪夫距离 = num1
  7. Else
  8. 求切比雪夫距离 = num2
  9. End If
  10. End Function
复制代码
下面我们应用以上方法来计算出距离某个目标点最近的目标点坐标。

调用方法:
  1. Dim x, y, coordinates, i
  2. x = 123
  3. y = 456
  4. coordinates = "321,123|456,123|123,321|456,654|789,987|321,654|654,987"
  5. For i = 1 To 3
  6. TracePrint "方法"&i&":距离目标"&x&","&y&"最近的目标为"&获取离人物最近的目标(x, y, coordinates,i)
  7. Next
复制代码
调试结果:
脚本 计算坐标间的距离.Q ,第6行:方法1:距离目标123,456最近的目标为123,321
脚本 计算坐标间的距离.Q ,第6行:方法2:距离目标123,456最近的目标为123,321
脚本 计算坐标间的距离.Q ,第6行:方法3:距离目标123,456最近的目标为123,321

源码:
  1. Function 获取离人物最近的目标(x, y, coordinates,type_)
  2. If coordinates = "" Then
  3. 获取离人物最近的目标 = ""
  4. Exit Function
  5. End If
  6. coordinates = split(coordinates, "|")
  7. Dim i, NearestPos,U_coordinates,coordinates1,coordinates2
  8. NearestPos = coordinates(0)
  9. coordinates2 = Split(NearestPos, ",")
  10. U_coordinates = UBound(coordinates)
  11. For i = 1 To U_coordinates
  12. coordinates1 = Split(coordinates(i), ",")
  13. If 求距离(x, y, CLng(coordinates1(0)), CLng(coordinates1(1)),type_) < 求距离(x, y, CLng(coordinates2(0)), CLng(coordinates2(1)),type_) Then
  14. NearestPos = coordinates(i)
  15. coordinates2 = Split(NearestPos, ",")
  16. End If
  17. Next
  18. 获取离人物最近的目标 = NearestPos
  19. End Function
  20. Function 求曼哈顿距离(x1, y1, x2, y2)
  21. 求曼哈顿距离 = Abs(x1 - x2) + Abs(y1 - y2)
  22. End Function
  23. Function 求欧式距离(x1, y1, x2, y2)
  24. 求欧式距离 = Sqr(((x1 - x2) ^ 2) + ((y1 - y2) ^ 2))
  25. End Function
  26. Function 求切比雪夫距离(x1, y1, x2, y2)
  27. Dim num1, num2
  28. num1 = Abs(x1 - x2)
  29. num2 = Abs(y1 - y2)
  30. If num1 > num2 Then
  31. 求切比雪夫距离 = num1
  32. Else
  33. 求切比雪夫距离 = num2
  34. End If
  35. End Function
  36. Function 求距离(x1, y1, x2, y2, type_)
  37. If type_ = 1 Then
  38. 求距离 = 求曼哈顿距离(x1, y1, x2, y2)
  39. ElseIf type_ = 2 Then
  40. 求距离 = 求欧式距离(x1, y1, x2, y2)
  41. ElseIf type_ = 3 Then
  42. 求距离 = 求切比雪夫距离(x1, y1, x2, y2)
  43. End If
  44. End Function
复制代码

以上三种方法在不同情况下的运算效率及结果可能会有差异,可根据实际情况选择合适的方法。

近期制作:
传奇私服各种反外挂插件版本挂机软件,可教可售
原神加速、连发辅助工具
天下3自动钓大鱼辅助工具

承接脚本定制,点击下方联系
QQ:250039815

交流群:101296478

2#

感谢分享 干货满满

脚本订购 软件设计 请联系 QQ:1762272313 添加请注明原因!
脚本订购起步价:100 RMB 非诚勿扰 点击打开淘宝店铺
承接: 小型/中型 个人/工作室 项目脚本开发
提示: 电脑版 / 安卓版[仅限图色脚本 外挂免谈]
软件保障条约:【暂不收徒 不无偿指导 !谢谢支持】
1:脚本维护与更新视情况收费一定的费用!
2:所有定制均需订金,否则勿扰. 非诚勿扰 !
3:天下没有白吃的午餐.所以别浪费彼此宝贵的时间.
4:天道酬勤 ,人道酬诚 .人无信则不立.
3#

干货满满

4#

11111

5#

,

感谢分享

6#

谢谢楼主,学习收藏了

7#

11

11111111111

8#

感谢分享 干货满满

9#

1111111111

10#

授教了!~

11#

感谢分享 全是干货

12#

确实说好东西

13#

天天学习

14#

学习

15#

计算坐标间的距离

16#

ddddddd

17#

强大,强大

18#


19#

学习距离测量

20#

计算坐标间的距离.Q ,第6行:方法3:距离目标123,456最近的目标为123,321

感谢各位大神无私分享,认真学习中......
发新话题 回复该主题