C#||坐标距离和方位角计算

根据两点坐标,计算距离和方位角。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Math;

namespace Geo
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.Write("请输入A点的X坐标: ");
            double Xa = double.Parse(Console.ReadLine());
            Console.Write("请输入A点的Y坐标: ");
            double Ya = double.Parse(Console.ReadLine());
            Console.Write("请输入B点的X坐标: ");
            double Xb = double.Parse(Console.ReadLine());
            Console.Write("请输入B点的Y坐标: ");
            double Yb = double.Parse(Console.ReadLine());
            double deltaX = Xb - Xa;
            double deltaY = Yb - Ya;
            Console.WriteLine("两点距离 = {0}", GeoCal.distance(deltaX, deltaY));
            Console.WriteLine("B点相对于A点的方位角 = {0}", GeoCal.direction(deltaX, deltaY));
        }
        
        public class GeoCal
        {
            public static double distance(double deltaX, double deltaY)
            {
                return Math.Sqrt(Math.pow(deltaX, 2) + Math.pow(deltaY, 2));
            }
            public static double direction(double deltaX, double deltaY)
            {
                //判断象限
                if(deltaX>0&&deltaY>=0)
                {//第一象限【不变】
                	return Math.Atan(deltaY/deltaX)*180/Math.PI;//弧度转角度
                }
                else if(deltaX<0&&deltaY>=0{//第二象限【+180】
                	return Math.Atan(deltaY/deltaX)*180/Math.PI + 180;
                }
                else if(deltaX<0&&deltaY<=0{//第三象限【+180】
                	return Math.Atan(deltaY/deltaX)*180/Math.PI + 180;
                }
                else if(deltaX>0&&deltaY<=0{//第四象限【+360】
                	return Math.Atan(deltaY/deltaX)*180/Math.PI + 360;
                }
                else if(deltaX=0&&deltaY>0{//90°
                	return 90;
                }
                else if(deltaX=0&&deltaY<0{//270°
                	return 270;
                }
                else
                {//同点
                	Console.WriteLine("点A和点B是同一个点,无相对方位角。");
                	return -1;
                }
            }
        }
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值