我正在创建一个应用程序,以创建任何半径的圆,给定中心纬度/经度坐标。 我需要做的是获取初始纬度/经度坐标和半径,计算圆的点并将它们添加到字典列表中。
以下是我目前所拥有的代码,但是出现了错误,提示“已经添加了具有相同键的项”,这让我认为它实际上没有正确地转换圆形坐标。
以下是我目前所拥有的代码,但是出现了错误,提示“已经添加了具有相同键的项”,这让我认为它实际上没有正确地转换圆形坐标。
private const double EARTH_RADIUS_NM = 3437.670013352;
private void plot(double lat, double lon, double radius)
{
var coords = new Dictionary<double, double>();
lat = ConvertToRadians(lat);
lon = ConvertToRadians(lon);
double d = radius / EARTH_RADIUS_NM;
for(int x = 0; x <= 360; x++)
{
double brng = ConvertToRadians(x);
var latRadians = Math.Asin(Math.Sin(lat) * Math.Cos(d) + Math.Cos(lat) * Math.Sin(d) * Math.Cos(brng));
var lngRadians = lon + Math.Atan2(Math.Sin(brng) * Math.Sin(d) * Math.Cos(lat), Math.Cos(d) - Math.Sin(lat) * Math.Sin(latRadians));
coords.Add(latRadians, lngRadians);
}
}
public double ConvertToRadians(double angle)
{
return (angle * Math.PI) / 180;
}
使用示例:
plot(33.9331486, -118.4320114, 0.5);
有人能指点我正确的方向吗?
coords.Add(latRadians, lngRadians);
->coords.Add(latRadians, lngRadians);
- Nicholas