public Angle se(Angle latA, Angle lonA, TKsoft.Earth.Angle latB, Angle lonB) { //知道 两点经纬度,求角度的方法 double cosLatB = Math.Cos(latB.Radians); Angle tcA = TKsoft.Earth.Angle.FromRadians(Math.Atan2( Math.Sin(lonA.Radians - lonB.Radians) * cosLatB, Math.Cos(latA.Radians) * Math.Sin(latB.Radians) - Math.Sin(latA.Radians) * cosLatB * Math.Cos(lonA.Radians - lonB.Radians))); if (tcA.Radians < 0) tcA.Radians = tcA.Radians + Math.PI * 2; tcA.Radians = Math.PI * 2 - tcA.Radians; return tcA; }
以上代码因项目问题,angle是一个类,各位以此代码 做为参考应该能猜出个大概来(Angle 前缀引用 被 我了)
/** *根据一点、角点(正北0度,顺生针增大)、距离(米)计算另一点 */ public static System.Drawing.PointF CalPoint(double x, double y, double angel, double distance) { // System.Drawing.PointF endPoint = new System.Drawing.PointF(); //角度换算成正东0度,逆时针增大 angel = -angel - 360+90; //米换算成经纬度 var dis = distance / 1000 / 111.7; //角点换成弧度 angel = angel * Math.PI / 180; //计算y坐标 endPoint.Y = (float)(Math.Sin(angel) * dis + y); //计算x坐标 endPoint.X = (float)(Math.Cos(angel) * dis + x); return endPoint; }
原文:http://www.cnblogs.com/chcong/p/4617109.html