C# 按半径和角度在动态显示数据地图中创建围绕点的圆

C# 按半径和角度在动态显示数据地图中创建围绕点的圆,c#,dynamic-data-display,C#,Dynamic Data Display,我使用microsoft visual 2010动态数据显示dll 我需要以角度和半径围绕一个点做一个圆。 我一直很成功,但我认为这是错误的。 首先,我的源代码: 我从鼠标点击中得到了准备(这不是问题,关键是完美的工作,你可以在下面的图片中看到) 其次,我实际得到的是: 在中间我得到了一个完美的圆,但在北部和南部,这个圆是椭圆形的。 图片: 我很高兴了解: 为什么?好吗?或者我需要改变什么? 因为我考虑过了,地球是圆的,它的类型是合理的。地图投影很可能是墨卡托投影,所以你看到的是地球表面扭曲的圆

我使用microsoft visual 2010动态数据显示dll 我需要以角度和半径围绕一个点做一个圆。 我一直很成功,但我认为这是错误的。 首先,我的源代码:

我从鼠标点击中得到了准备(这不是问题,关键是完美的工作,你可以在下面的图片中看到)

其次,我实际得到的是: 在中间我得到了一个完美的圆,但在北部和南部,这个圆是椭圆形的。 图片:

我很高兴了解: 为什么?好吗?或者我需要改变什么?
因为我考虑过了,地球是圆的,它的类型是合理的。

地图投影很可能是墨卡托投影,所以你看到的是地球表面扭曲的圆的正确表示。墨卡托投影以圆柱体的方式“展开”行星,因此,当你从赤道向两极进一步移动时,陆地质量会扭曲。你可以通过地图左侧的标记看到,0到30度之间的距离远小于30到60度之间的距离。请看这里:这是地球实际陆地面积的更精确表示,正如你所看到的,朝向两极,土地比墨卡托投影图上的要小得多:最后,这是我最喜欢的投影图之一:-给你一个关于相对土地质量的非常好的想法,如果我很好地理解它的权利,没有什么可以改变的话?:)
 // Get the X position of the pointClicked
                    cx = (double)prePs.X;
                    // Get the Y position of the pointClicked
                    cy = double.Parse(this.plotter.Viewport.Transform.DataTransform.ViewportToData(prePs).Y.ToString());

                    // Get the new X position of the pointClicked by the angel with math calculation
                    xEndP = (float)(double.Parse(txt_enterRadius.Text.ToString()) * Math.Cos(a * Math.PI / 180F)) + cx;
                    // Get the new Y position of the pointClicked by the angel with math calculation
                    yEndP = (float)(double.Parse(txt_enterRadius.Text.ToString()) * Math.Sin(a * Math.PI / 180F)) + cy;
http://sizmedia.com/my.php?i=hm2zuv5yyenj.png