Ich passte den folgenden Code für Python auf diesem page: für ein Javascript-Äquivalent.Warum ist diese Formel für einen Kreis ein Ellipsoid in Javascript, aber ein Kreis in Python?
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
Der Abstand zwischen diesen Punkten ist konstant, wie es sein sollte.
Meine JS-Version ist, soweit ich weiß, das entspricht:
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))]);
}
Aber wenn ich Ausgang dieses, sind die Koordinaten von der Mitte nicht gleich weit entfernt.
Das ist enorm frustrierend - ich habe versucht, dies für einen Tag zu debuggen. Kann jemand sehen, was den JS-Code versagt?