【发布时间】:2016-08-04 21:40:15
【问题描述】:
我为 page 上的 python 修改了以下代码: 对于 Javascript 等效项。
import math
# inputs
radius = 1000.0 # m - the following code is an approximation that stays reasonably accurate for distances < 100km
centerLat = 30.0 # latitude of circle center, decimal degrees
centerLon = -100.0 # Longitude of circle center, decimal degrees
# parameters
N = 10 # number of discrete sample points to be generated along the circle
# generate points
circlePoints = []
for k in xrange(N):
# compute
angle = math.pi*2*k/N
dx = radius*math.cos(angle)
dy = radius*math.sin(angle)
point = {}
point['lat']=centerLat + (180/math.pi)*(dy/6378137)
point['lon']=centerLon + (180/math.pi)*(dx/6378137)/math.cos(centerLat*math.pi/180)
# add to list
circlePoints.append(point)
print circlePoints
这些点之间的距离应该是恒定的。
据我所知,我的 JS 版本是等效的:
var nodesCount = 8;
var coords = [];
for (var i = 0; i <= nodesCount; i++) {
var radius = 1000;
var angle = Math.PI*2*i/nodesCount;
var dx = radius*Math.cos(angle);
var dy = radius*Math.sin(angle);
coords.push([(rootLongitude + (180 / Math.PI) * (dx / EARTH_RADIUS) / Math.cos(rootLatitude * Math.PI / 180)),(rootLatitude + (180 / Math.PI) * (dy / EARTH_RADIUS))]);
}
但是当我输出这个时,坐标离中心不是等距的。
这非常令人沮丧——我已经尝试调试了一天。谁能看到是什么导致 JS 代码失败?
【问题讨论】:
标签: javascript python gps geometry trigonometry