2025-10-31 01:42:47

算法-入门篇(球面距离)

概述

球面距离公式是计算球面上两点间距离的公式。设所求点A ,纬度角β1 ,经度角α1 ;点B ,纬度角β2 ,经度角α2。则距离S=R·arc cos[cosβ1cosβ2cos(α1-α2)+sinβ1sinβ2],其中R为球体半径。 详见 百度百科:https://baike.baidu.com/item/%E7%90%83%E9%9D%A2%E8%B7%9D%E7%A6%BB%E5%85%AC%E5%BC%8F/5374455?fr=aladdin

数学模型: 计算公式:

L=R·arc cos[cos(wA)cos(wB)cos(jB-jA) + sin(wA)sin(wB)] 补充:

弧长=弧度*R -------------弧度=角度 x (π/180)

因为180°=π(π是弧度单位) 两边同÷180 得1°=π/180弧度

使用

球面距离在开发中一般用在,地理位置的位移量计算中。

本文将根据 风控系统中,用户登录的位移量评估 简单介绍此算法的使用。

一般的,我们再日志中,可以获取客户端的登录IP,根据IP将可以得到 地理位置经纬度,根据前一次登录的经纬度与下一次的登录的经纬度做对比,如果,在这两个时间的间隔时间内,发生了超乎寻常的平均位移量,将判断为有风险。

代码实现

public boolean doEval(long evaluateTime, GeoPoint currentGeoPoint,long lastLoginTime,GeoPoint lastLoginGeoPoint){

//判断如果没有上一次登陆的地理位置,则不进行评估

if(lastLoginGeoPoint==null){

return false;

}else {

【党史百年】人物•故事 湖南革命人物刘少奇
柚子理财2025最新评测:安全收益与风险全解析