|
@@ -28,14 +28,6 @@ namespace MuShiApp
|
|
|
|
|
|
}
|
|
|
|
|
|
-
|
|
|
- double distance = 2;
|
|
|
-
|
|
|
-
|
|
|
- double visibility = 7.5;
|
|
|
-
|
|
|
-
|
|
|
- double WaveHeight = 1.5;
|
|
|
|
|
|
|
|
|
double[] a = { 9.5128, 1.3738, 0.0875 };
|
|
@@ -44,14 +36,10 @@ namespace MuShiApp
|
|
|
double[] d = { 95.0664, 97.0952, 94.9145 };
|
|
|
|
|
|
double[][] r = new double[3][];
|
|
|
-
|
|
|
-
|
|
|
double[][] e = new double[3][];
|
|
|
-
|
|
|
-
|
|
|
double[] posibility = { 0, 0, 0 };
|
|
|
|
|
|
- public double GetMushiSeaProbability(double3 aircraftPoint, double3 targetPoint,double visibility, double wavehigh, TargetPoint targetPoint1, string type)
|
|
|
+ public double GetMushiSeaProbability(double3 aircraftPoint, double visibility, double wavehigh, TargetPoint targetPoint)
|
|
|
{
|
|
|
r[0] = new double[] { 4.375, 1.18, 1.01, 1 };
|
|
|
r[1] = new double[] { 2.85, 1.51, 1.18, 1 };
|
|
@@ -59,18 +47,18 @@ namespace MuShiApp
|
|
|
e[0] = new double[] { -10, -30, -50, -65, -80, -90 };
|
|
|
e[1] = new double[] { -2, -15, -30, -50, -70, -80 };
|
|
|
e[2] = new double[] { 0, 0, -10, -20, -30, -40 };
|
|
|
+
|
|
|
double[] posibility = { 0, 0, 0 };
|
|
|
|
|
|
- distance = GetDistance(aircraftPoint.x, targetPoint.x,aircraftPoint.y,targetPoint.y);
|
|
|
- WaveHeight = wavehigh;
|
|
|
+ var distance = GetDistance(aircraftPoint.x, targetPoint.TargetPointLongitude,aircraftPoint.y,targetPoint.TargetPointLatitude);
|
|
|
|
|
|
if (distance >= 0 && distance < 2)
|
|
|
{
|
|
|
- posibility = MuShiModel.GetPosibilityClear(distance, a, b, c, d, r, e, visibility, WaveHeight);
|
|
|
+ posibility = MuShiModel.GetPosibilityClear(distance, a, b, c, d, r, e, visibility, wavehigh);
|
|
|
while (posibility[0] <= 0 || posibility[1] <= 0 || posibility[2] <= 0)
|
|
|
{
|
|
|
distance += 0.1;
|
|
|
- posibility = MuShiModel.GetPosibilityClear(distance, a, b, c, d, r, e, visibility, WaveHeight);
|
|
|
+ posibility = MuShiModel.GetPosibilityClear(distance, a, b, c, d, r, e, visibility, wavehigh);
|
|
|
}
|
|
|
}
|
|
|
if (distance >= 2)
|
|
@@ -95,8 +83,75 @@ namespace MuShiApp
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- return 0;
|
|
|
+ return posibility[GetType(targetPoint.TargetType.Type)];
|
|
|
+ }
|
|
|
+
|
|
|
+ public double GetMushiLandProbability(double3 aircraftPoint, double visibility, TargetPoint targetPoint)
|
|
|
+ {
|
|
|
+ r[0] = new double[] { 4.375, 1.18, 1.01, 1 };
|
|
|
+ r[1] = new double[] { 2.85, 1.51, 1.18, 1 };
|
|
|
+ r[2] = new double[] { 2.75, 2.1, 1.2, 1 };
|
|
|
+ e[0] = new double[] { 0, -30, -50, -65, -80, -90 };
|
|
|
+ e[1] = new double[] { 0, -15, -30, -50, -70, -80 };
|
|
|
+ e[2] = new double[] { 0, 0, -10, -20, -30, -40 };
|
|
|
+
|
|
|
+ double[] posibility = { 0, 0, 0 };
|
|
|
+
|
|
|
+ var distance = GetDistance(aircraftPoint.x, targetPoint.TargetPointLongitude,aircraftPoint.y,targetPoint.TargetPointLatitude);
|
|
|
+
|
|
|
+ if (distance >= 0 && distance < 2)
|
|
|
+ {
|
|
|
+ posibility = MuShiModel.GetPosibilityClear(distance, a, b, c, d, r, e, visibility, 0);
|
|
|
+ while (posibility[0] <= 0 || posibility[1] <= 0 || posibility[2] <= 0)
|
|
|
+ {
|
|
|
+ distance += 0.1;
|
|
|
+ posibility = MuShiModel.GetPosibilityClear(distance, a, b, c, d, r, e, visibility, 0);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if (distance >= 2)
|
|
|
+ {
|
|
|
+ posibility = MuShiModel.GetPosibilityFar(distance, a, b, c, d);
|
|
|
+ while (posibility[0] <= 0 || posibility[1] <= 0 || posibility[2] <= 0)
|
|
|
+ {
|
|
|
+ distance += 0.5;
|
|
|
+ posibility = MuShiModel.GetPosibilityFar(distance, a, b, c, d);
|
|
|
+ }
|
|
|
+ if (distance > 3.5)
|
|
|
+ {
|
|
|
+ posibility[0] = 0;
|
|
|
+ }
|
|
|
+ if (distance > 5)
|
|
|
+ {
|
|
|
+ posibility[1] = 0;
|
|
|
+ }
|
|
|
+ if (distance > 10)
|
|
|
+ {
|
|
|
+ posibility[2] = 0;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ return posibility[GetType(targetPoint.TargetType.Type)];
|
|
|
+ }
|
|
|
+
|
|
|
+ public int GetType(string type)
|
|
|
+ {
|
|
|
+ switch (type)
|
|
|
+ {
|
|
|
+ case "遇险人员":
|
|
|
+ case "落水人员":
|
|
|
+ return 0;
|
|
|
+ case "车辆":
|
|
|
+ case "救生筏":
|
|
|
+ case "小于5700kg航空器":
|
|
|
+ case "小于20m船舶":
|
|
|
+ return 1;
|
|
|
+ case "大于20m船舶":
|
|
|
+ case "大于5700kg航空器":
|
|
|
+ return 2;
|
|
|
+ }
|
|
|
+ return -1;
|
|
|
}
|
|
|
+
|
|
|
|
|
|
public static double GetDistance(double lon1, double lon2, double lat1, double lat2)
|
|
|
{
|
|
@@ -275,7 +330,7 @@ namespace MuShiApp
|
|
|
return Convert.ToDouble(randNum.ToString("f" + decimalPlace));
|
|
|
}
|
|
|
|
|
|
- private double getVisibility(string city_name, string weather_date)
|
|
|
+ public double getVisibility(string city_name, string weather_date)
|
|
|
{
|
|
|
try
|
|
|
{
|
|
@@ -315,7 +370,7 @@ namespace MuShiApp
|
|
|
|
|
|
|
|
|
|
|
|
- private string getCityName(double lon, double lat)
|
|
|
+ public string getCityName(double lon, double lat)
|
|
|
{
|
|
|
string cityName = "北京";
|
|
|
|