ximalangyashan 2023-02-10 11:42 采纳率: 98.9%
浏览 29
已结题

C#计算结果为nan,哪里出问题了

C#计算结果为nan,哪里出问题了

代码如下

using System;
namespace ConsoleApp2
{
    class Point
    {
        public double x;
        public double y;
    }
    class AbstractCalculation
    {
        public virtual Point Crosscal(Point pa, Point pb, double a, double b)
        {
            throw new Exception("TODO");
        }
    }
    class JLJH : AbstractCalculation
    {
        public override Point Crosscal(Point pa, Point pb, double a, double b)
        {
            double Dab = Math.Sqrt((pa.x - pb.x) * (pa.x - pb.x) + (pa.y - pb.y) * (pa.y - pb.y));
            double Za = Math.Acos((Dab * Dab + a * a - b) / (2 * Dab * a));
            double Zb = Math.Acos((Dab * Dab + b * b - a * a) / (2 * Dab * b));
            double Zab = Math.Atan((pb.y - pa.y) / (pb.x - pa.x));
            double Zap = Zab - Za;
            double Zbp = Zap + Zb;
            double xp1 = pa.x + a * Math.Cos(Zap);
            double yp1 = pa.y + a * Math.Sin(Zap);
            double xp2 = pb.x + b * Math.Cos(Zbp);
            double yp2 = pb.y + b * Math.Sin(Zbp);
            Point resultP = new Point();
            resultP.x = (xp1 + xp2)/2;
            resultP.y = (yp1 + yp2)/2;
            return resultP;
        }
    }
    class Program
    {
        static void Main(string[] args)
        {
            Point paa = new Point();
            paa.x = 1.0;
            paa.y = 1.0;
            Point pbb = new Point();
            pbb.x = 5.5;
            pbb.y = 6.6;
            double aa = 45;
            double bb = 63;
            Point resultPP = new Point();
            //距离交会计算
            AbstractCalculation ac = new JLJH();
            resultPP = ac.Crosscal(paa, pbb, aa, bb);

            Console.WriteLine($"x:{resultPP.x} x:{resultPP.y}");
            Console.ReadKey();
        }
    }
}

输出结果如下

img

  • 写回答

4条回答 默认 最新

  • CSDN专家-showbo 2023-02-10 11:49
    关注

    Dab变量值有问题,调用Math.Acos返回nan了,后续操作nan都是得到nan。题主检查下Dab怎么计算法的。

    img

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

问题事件

  • 系统已结题 2月18日
  • 已采纳回答 2月10日
  • 创建了问题 2月10日

悬赏问题

  • ¥15 蓝桥oj3931,请问我错在哪里
  • ¥15 买了个传感器,根据商家发的代码和步骤使用但是代码报错了不会改,有没有人可以看看
  • ¥15 关于#Java#的问题,如何解决?
  • ¥15 加热介质是液体,换热器壳侧导热系数和总的导热系数怎么算
  • ¥100 嵌入式系统基于PIC16F882和热敏电阻的数字温度计
  • ¥15 cmd cl 0x000007b
  • ¥20 BAPI_PR_CHANGE how to add account assignment information for service line
  • ¥500 火焰左右视图、视差(基于双目相机)
  • ¥100 set_link_state
  • ¥15 虚幻5 UE美术毛发渲染