首页 / C# / C#-给定中心纬度/经度和半径创建圆坐标
C#-给定中心纬度/经度和半径创建圆坐标
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了C#-给定中心纬度/经度和半径创建圆坐标,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1488字,纯文字阅读大概需要3分钟。
内容图文
![C#-给定中心纬度/经度和半径创建圆坐标](/upload/InfoBanner/zyjiaocheng/680/de6ff33cf0cd478e8f4060f8864ad6a0.jpg)
我正在创建一个应用程序,以给定中心纬度/经度坐标来创建任何半径的圆.我需要做的是获取初始纬度/经度坐标和半径并计算圆的点,然后将其添加到词典列表中.
到目前为止,这是我所拥有的,但是,如果这样,我会收到一条错误消息,说“已经添加了具有相同键的项”,这使我相信它实际上并没有正确地转换圆坐标.
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);
有人可以指出我正确的方向吗?
解决方法:
您正在正确输入坐标.问题在于词典不是用于数据存储的正确数据类型.圆将始终沿y轴的正高度和负高度命中相同的X坐标.
您将要创建一个简单的类来存储两个坐标,并列出它们:
public class Coordinate
{
public double Lat { get; set; }
public double Lon { get; set; }
public Coordinate(double lat, double lon)
{
this.Lat = lat;
this.Lon = lon;
}
}
然后在您的方法中,使用var coords = new List< Coord>();.然后,在您当前正在分配它们的位置,只需执行以下操作:
coords.Add(new Coordinate(lat, lon));
内容总结
以上是互联网集市为您收集整理的C#-给定中心纬度/经度和半径创建圆坐标全部内容,希望文章能够帮你解决C#-给定中心纬度/经度和半径创建圆坐标所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。