public static int GetZone(CMGeoPoint point, double Radius, int TakeoffSurfaceDirection, CMRunwayThreshold RunwayBegin, CMRunwayThreshold RunwayEnd) { double RunwayLength = GetDistance(RunwayBegin, RunwayEnd); List <PointLatLng> Plane1 = new List <PointLatLng>(); Plane1.Add(CMGeoBase.GetCoordinate(RunwayBegin, RunwayBegin.BackTrueCourse - 90, Radius).Coordinates); Plane1.Add(CMGeoBase.GetCoordinate(RunwayEnd, RunwayEnd.BackTrueCourse + 90, Radius).Coordinates); Plane1.Add(CMGeoBase.GetCoordinate(RunwayEnd, RunwayEnd.BackTrueCourse - 90, Radius).Coordinates); Plane1.Add(CMGeoBase.GetCoordinate(RunwayBegin, RunwayBegin.BackTrueCourse + 90, Radius).Coordinates); //Plane1.Add(CMGeoBase.OtstupVPP(Radius, 1, RunwayBegin.Coordinates)); //Plane1.Add(CMGeoBase.OtstupVPP(Radius, 1, RunwayEnd.Coordinates)); //Plane1.Add(CMGeoBase.OtstupVPP(Radius, 3, RunwayEnd.Coordinates)); //Plane1.Add(CMGeoBase.OtstupVPP(Radius, 3, RunwayBegin.Coordinates)); // ShowPolygonPoints(Plane1); if (CMGeoBase.IsPointInPolygon(Plane1, point.Coordinates)) { return(2); } else { //CMGeoPoint pointx = CMGeoBase.GetCoordinate(RunwayBegin,RunwayBegin. PointLatLng pointx = CMGeoBase.GetCoordinate(RunwayBegin.Coordinates, RunwayBegin.TrueCourse, RunwayLength / 2); PointLatLng LineBegin = CMGeoBase.GetCoordinate(pointx, RunwayBegin.TrueCourse + 90, Radius); PointLatLng LineEnd = CMGeoBase.GetCoordinate(pointx, RunwayBegin.TrueCourse - 90, Radius); //PointLatLng pointx_ = CMGeoBase.OtstupVPP(RunwayLength / 2, TakeoffSurfaceDirection, RunwayBegin.Coordinates); //PointLatLng LineBegin_ = CMGeoBase.OtstupVPP(Radius, 1, pointx); //PointLatLng LineEnd_ = CMGeoBase.OtstupVPP(Radius, 3, pointx); double dec = LineSide(point.Coordinates, LineBegin, LineEnd); if (dec <= 0) { return(TakeoffSurfaceDirection == 2 ? 3 : 1); } else { return(TakeoffSurfaceDirection == 2 ? 1 : 3); } } }
public List <PointLatLng> PointsList() { List <PointLatLng> mPointsList = new List <PointLatLng>(); //mPointsList.Add(CMGeoBase.GetCoordinate(CMGeoBase.GetCoordinate(RunwayBegin.Coordinates, RunwayBegin.TrueCourse, -(InnerApproachSurface.Offset + InnerApproachSurface.Length)), APInf.CRW.RunwayBegin.TrueCourse + 90, Width / 2 + 42 / HeightAngle)); mPointsList.Add(CMGeoBase.GetCoordinate(RunwayBegin.Coordinates, RunwayBegin.TrueCourse + 90, Width / 2)); mPointsList.Add(CMGeoBase.GetCoordinate(RunwayEnd.Coordinates, RunwayEnd.TrueCourse - 90, Width / 2)); mPointsList.Add(CMGeoBase.GetCoordinate(RunwayEnd.Coordinates, RunwayEnd.TrueCourse + 90, Width / 2)); //mPointsList.Add(CMGeoBase.OtstupVPP(Width / 2, 1, CMGeoBase.OtstupVPP(0, TransitionSurfaceDirection, RunwayBegin.Coordinates, GetCalcTrueCourse()), GetCalcTrueCourse())); //mPointsList.Add(CMGeoBase.OtstupVPP(Width / 2, 1, CMGeoBase.OtstupVPP(0, TransitionSurfaceDirection, RunwayEnd.Coordinates, GetCalcTrueCourse()), GetCalcTrueCourse())); //mPointsList.Add(CMGeoBase.OtstupVPP(Width / 2, 3, CMGeoBase.OtstupVPP(0, TransitionSurfaceDirection, RunwayEnd.Coordinates, GetCalcTrueCourse()), GetCalcTrueCourse())); //mPointsList.Add(CMGeoBase.OtstupVPP(Width / 2, 3, CMGeoBase.OtstupVPP(0, TransitionSurfaceDirection, RunwayBegin.Coordinates, GetCalcTrueCourse()), GetCalcTrueCourse())); mPointsList.Add(CMGeoBase.GetCoordinate(RunwayBegin.Coordinates, RunwayBegin.TrueCourse - 90, Width / 2)); return(mPointsList); }