Compare commits

..

No commits in common. "e686eb3e0605a156be5cdd0d34ab41fd18684e08" and "3ea1a3b9c2467c104ecb7919125a4a738b4b14a3" have entirely different histories.

View File

@ -1663,14 +1663,14 @@ namespace FlightRouteV2
{
isPass = false;
long t = DateTimeOffset.UtcNow.ToUnixTimeSeconds();
//StrPrint("-------3D绕行开始-------");
StrPrint("-------3D绕行开始-------");
List<List<Vector3>> re = new List<List<Vector3>>();
///判断有没有碰撞 有碰撞继续 没有直接返回
List<int[]> planesCollision = AirImitation(aVecs, bVecs); //获取碰撞组
if (planesCollision.Count == 0)
{
StrPrint("执行成功:没有检测到碰撞,故不用添加中间航点");
//StrPrint($"-------3D绕行结束-------");
StrPrint("没有检测到碰撞,故不用添加中间航点");
StrPrint($"-------3D绕行结束-------");
isPass = true;
return re;//直接返回
}
@ -1688,7 +1688,6 @@ namespace FlightRouteV2
///碰撞数
int collisionCou;
///第一次绕行 中间1航点
StrPrint($"3D航线第一次计算开始。");
List<int> collisionGroup = TwoArrToArr(planesCollision); //整合数组
List<Vector3> middleVecs = new List<Vector3>(); //中心航点坐标组
for (int i = 0; i < planeCou; i++)
@ -1700,7 +1699,7 @@ namespace FlightRouteV2
{
if (cancellationToken.IsCancellationRequested)//外部法取消指令
{
StrPrint("取消3D航线操作。");
StrPrint("-------3D绕行操作被取消-------");
return null; // 退出函数
}
int progress = 0;//进度
@ -1709,7 +1708,7 @@ namespace FlightRouteV2
progress++;
GetVal(progress / collisionGroup.Count * 100);
List<Vector3> grv = GetRingVec(aVecs[i], bVecs[i], 0.5, 5, 4, 1500, 300);//中间可绕行航点列表
StrPrint($"3D航线第一次计算进度:{progress}/{collisionGroup.Count},本次计算{grv.Count}次");
StrPrint($"进度:{progress}/{collisionGroup.Count},本次绕行{grv.Count}次");
foreach (Vector3 v in grv)
{
middleVecs[i] = v;
@ -1732,22 +1731,21 @@ namespace FlightRouteV2
//没有碰撞 返回一个中间航点 并返回
if (collisionGroup.Count == 0)
{
StrPrint("执行成功:第一次计算即成功!");
StrPrint("第一次绕行成功!");
t = DateTimeOffset.UtcNow.ToUnixTimeSeconds() - t;
StrPrint($"用时:{t}秒");
//StrPrint($"-------3D绕行结束-------");
StrPrint($"-------3D绕行结束-------");
re.Add(middleVecs);
return re;
}
else
{
string mappingOutput = string.Join(", ", collisionGroup.Select(index => $"{mappingId[index]}号")); // 构建映射关系字符串
StrPrint($"3D航线第一次计算之后仍有{collisionGroup.Count}架有碰撞:{mappingOutput}");
//StrPrint("第一次绕行未成功!");
StrPrint($"{collisionGroup.Count}架有碰撞:{mappingOutput}");
StrPrint("第一次绕行未成功!");
}
///第二次绕行 两头 两航点
StrPrint($"3D航线第二次计算开始。");
bool isPassMark = false;
planesCollision = AirImitation(aVecs, bVecs); //获取碰撞组
collisionGroup = TwoArrToArr(planesCollision); //整合数组
@ -1763,7 +1761,7 @@ namespace FlightRouteV2
{
if (cancellationToken.IsCancellationRequested)//外部法取消指令
{
StrPrint("取消3D航线操作。");
StrPrint("-------3D绕行操作被取消-------");
return null; // 退出函数
}
int progress = 0;//进度
@ -1776,7 +1774,7 @@ namespace FlightRouteV2
sgrv1.Insert(0, secondMiddleVecsOne[i]);
List<Vector3> sgrv2 = GetRingVec(aVecs[i], bVecs[i], 1, 30, 10, 600, 300);//中间可绕行航点列表
sgrv2.Insert(0, secondMiddleVecsTwo[i]);
StrPrint($"3D航线第二次计算进度:{progress}/{collisionGroup.Count},本次绕行{sgrv1.Count * sgrv2.Count}次");
StrPrint($"进度:{progress}/{collisionGroup.Count},本次绕行{sgrv1.Count * sgrv2.Count}次");
foreach (Vector3 v1 in sgrv1)
{
secondMiddleVecsOne[i] = v1;
@ -1810,10 +1808,10 @@ namespace FlightRouteV2
//没有碰撞 返回两个中间航点 并返回
if (collisionGroup.Count == 0)
{
StrPrint("执行成功:第二次计算成功!");
StrPrint("第二次绕行成功!");
t = DateTimeOffset.UtcNow.ToUnixTimeSeconds() - t;
StrPrint($"用时:{t}秒");
//StrPrint($"-------3D绕行结束-------");
StrPrint($"-------3D绕行结束-------");
re.Add(secondMiddleVecsOne);
re.Add(secondMiddleVecsTwo);
return re;
@ -1821,12 +1819,11 @@ namespace FlightRouteV2
else
{
string mappingOutput = string.Join(", ", collisionGroup.Select(index => $"{mappingId[index]}号")); // 构建映射关系字符串
StrPrint($"3D航线第二次计算之后仍有{collisionGroup.Count}架有碰撞:{mappingOutput}");
//StrPrint("第二次绕行未成功!");
StrPrint($"{collisionGroup.Count}架有碰撞:{mappingOutput}");
StrPrint("第二次绕行未成功!");
}
///第三次绕行 两头 两航点 中间一行点(实际添加两航点 但是0.6位置航点暂不启用留给第四次绕行) 沿用第二次绕行
StrPrint($"3D航线第二次计算开始。");
isPassMark = false;
List<Vector3> thirdMiddleVecs = new List<Vector3>(); //中心航点坐标组1
for (int i = 0; i < planeCou; i++)
@ -1837,7 +1834,7 @@ namespace FlightRouteV2
{
if (cancellationToken.IsCancellationRequested)//外部法取消指令
{
StrPrint("取消3D航线操作。");
StrPrint("-------3D绕行操作被取消-------");
return null; // 退出函数
}
int progress = 0;//进度
@ -1894,9 +1891,10 @@ namespace FlightRouteV2
//没有碰撞 返回三个中间航点 并返回
if (collisionGroup.Count == 0)
{
StrPrint("执行成功:第三次计算成功!");
StrPrint("第三次绕行成功!");
t = DateTimeOffset.UtcNow.ToUnixTimeSeconds() - t;
StrPrint($"用时:{t}秒");
StrPrint($"-------3D绕行结束-------");
re.Add(secondMiddleVecsOne);
re.Add(thirdMiddleVecs);
re.Add(secondMiddleVecsTwo);
@ -1905,14 +1903,14 @@ namespace FlightRouteV2
else
{
string mappingOutput = string.Join(", ", collisionGroup.Select(index => $"{mappingId[index]}号")); // 构建映射关系字符串
StrPrint($"3D航线第三次计算之后仍有{collisionGroup.Count}架有碰撞:{mappingOutput}");
StrPrint("执行失败3D航线经过三次计算仍有碰撞。");
StrPrint($"{collisionGroup.Count}架有碰撞:{mappingOutput}");
StrPrint("第三次绕行未成功!");
}
///end
t = DateTimeOffset.UtcNow.ToUnixTimeSeconds() - t;
StrPrint($"用时:{t}秒");
//StrPrint($"-------3D绕行结束-------");
StrPrint($"-------3D绕行结束-------");
return re;
}
/// <summary>