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