示例#1
0
        /// <summary>
        /// Проверка конической поверхности
        /// </summary>
        /// <param name="Input"></param>
        public CMCGPCheckedResult CheckConeSurface__(CMCheckedGeoPoint Input, CMAPSurfaceA SurfaceA)
        {
            double distance   = CMGeoBase.GetDistance(Input, CMGeoBase.GetZone(Input, Radius, APInf.CRW.TakeoffSurfaceDirection, APInf.CRW.RunwayBegin, APInf.CRW.RunwayEnd), APInf.CRW.RunwayBegin, APInf.CRW.RunwayEnd);
            double height     = HeigthPlaneB(distance, SurfaceA);
            bool   IsObstacle = false;
            double dif        = 0;

            CMCGPCheckedResult CheckedResult = new CMCGPCheckedResult();

            CheckedResult.SurfaceName = "Коническая поверхность";

            ////если попал, считаем высоту
            height += APInf.AirfieldHeight;

            if (distance <= Radius)
            {
                if (distance > SurfaceA.Radius)
                {
                    if (height <= Input.Height)
                    {
                        IsObstacle = true;
                        dif        = Input.Height - height;
                    }
                    CheckedResult.ResultText = string.Format("Попадает в коническую поверхность и {0} превышает допустимую высоту {1} ", ((IsObstacle == true) ? "" : "не"), ((IsObstacle == true) ? (string.Format(" на {0} / {1}", Math.Round((Input.Height - height), 2), Math.Round(height, 2))) : ""));
                }
            }
            CheckedResult.IsObstacle    = IsObstacle;
            CheckedResult.PointHeight   = Input.Height;
            CheckedResult.SurfaceHeight = height;
            CheckedResult.Exceeding     = dif;
            return(CheckedResult);
        }
示例#2
0
        public double HeigthPlaneB(double DistanceToPlaneB, CMAPSurfaceA SurfaceA)
        {
            double HeightB = 0;

            if (DistanceToPlaneB >= SurfaceA.Radius) ////высота конической плоскости, рамки - от горизонтальной плоскости до 6 км, если меньше - указываем высоту горизонтальной плоскости
            {
                if (DistanceToPlaneB <= Radius)
                {
                    HeightB = Angle * (DistanceToPlaneB - SurfaceA.Radius);
                }
            }

            return(SurfaceA.Height + HeightB);
        }
示例#3
0
        public CMAPSurfaces()
        {
            SurfaceA = new CMAPSurfaceA();
            SurfaceB = new CMAPSurfaceB();
            SurfaceC = new CMAPSurfaceC();
            SurfaceOuterHorizontal = new CMAPSurfaceC();
            SurfaceD      = new CMAPSurfaceD();
            SurfaceE      = new CMAPSurfaceC();
            SurfaceNoiseG = new CMBAPSurfaceNoise(5947.81, 726.22, 61, "Шумовая зона Г");
            SurfaceNoiseV = new CMBAPSurfaceNoise(8196.22, 1007.73, 61, "Шумовая зона В");
            SurfaceNoiseB = new CMBAPSurfaceNoise(11073.75, 1368.12, 61, "Шумовая зона Б");

            APPVP_B = new CMAPPVP();

            ApproachSurface    = new CMApproachSurfaceData();
            TransitionSurface  = new CMTransitionSurfaceData();
            TakeoffSurface     = new CMTakeoffSurfaceData(0.016, "Поверхность взлета");
            TakeoffSurfaceInfo = new CMTakeoffSurfaceData(0.012, "Информационная поверхность");

            InnerApproachSurface     = new CMInnerApproachSurfaceData();
            CancelledApproachSurface = new CMCancelledApproachSurfaceData();
            InnerTransitionSurface   = new CMInnerTransitionSurfaceData();
        }