Java中基于自定义方位(东为0°)的坐标计算代码适配问询
适配东向为0°的方位坐标计算调整方案
你的核心需求是把方位规则从「北=0°」切换为「东=0°、北=90°、西=180°、南=270°」,只需要调整三角函数的对应关系即可,具体修改如下:
修改后的代码
public double lat = 24.54; public double lng = -2.12; public void newPosition(double lat, double lng, int degrees, double dist) { double angle = Math.toRadians(degrees); // 调整三角函数对应关系,适配东向为0°的方位规则 double delta_lat = dist * Math.sin(angle); double delta_lng = dist * Math.cos(angle); lat += delta_lat; lng += delta_lng; // 如果需要修改类的成员变量而非方法参数,替换成下面两行: // this.lat += delta_lat; // this.lng += delta_lng; }
调整逻辑说明
我们可以通过验证四个基础方位来确认逻辑正确性:
- 东(0°):
sin(0°)=0,cos(0°)=1→ 纬度无变化,经度增加dist,完全符合东向移动的预期 - 北(90°):
sin(90°)=1,cos(90°)=0→ 经度无变化,纬度增加dist,匹配北向移动的需求 - 西(180°):
sin(180°)=0,cos(180°)=-1→ 纬度无变化,经度减少dist,对应西向移动的逻辑 - 南(270°):
sin(270°)=-1,cos(270°)=0→ 经度无变化,纬度减少dist,满足南向移动的规则
另外提个小细节:当前方法里的lat和lng是局部参数,修改后不会影响类的成员变量。如果你的目标是更新类里定义的lat和lng,请注释掉参数的赋值行,改用this.lat和this.lng来修改成员变量。
内容的提问来源于stack exchange,提问作者ArtemisCode7
相关产品推荐
相关产品推荐

