/// <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); }
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); }
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(); }