2.4.1 交互式导航控件功能设计说明
2.4.1.1. 模块描述
交互式导航控件模块是交互式导航功能的核心模块,负责创建交互式导航控件,允许用户选择不同的起点和终点,动态生成路径。该模块提供直观友好的用户界面,使用户能够轻松地进行路径规划操作,并实时预览生成的路径结果。
该模块与NavigationMapGenerator、PathPlanningManager和WPF视图层紧密集成,提供完整的路径规划交互体验。
2.4.1.2. 功能
核心功能
- 起点选择:交互式选择路径起点
- 终点选择:交互式选择路径终点
- 路径生成:根据选择的起终点动态生成路径
- 实时预览:实时显示生成的路径
- 路径调整:支持调整路径参数重新生成
子功能
| 功能编号 |
功能名称 |
功能描述 |
| 2.4.1.F1 |
起点设置 |
在三维视图中设置起点 |
| 2.4.1.F2 |
终点设置 |
在三维视图中设置终点 |
| 2.4.1.F3 |
路径计算 |
自动计算最优路径 |
| 2.4.1.F4 |
路径显示 |
在三维视图中显示路径 |
| 2.4.1.F5 |
参数调整 |
调整路径规划参数 |
| 2.4.1.F6 |
路径保存 |
保存生成的路径 |
| 2.4.1.F7 |
多点导航 |
支持多个途经点 |
| 2.4.1.F8 |
路径比较 |
比较不同路径方案 |
2.4.1.3. 性能
性能指标
| 指标名称 |
目标值 |
说明 |
| 路径生成响应 |
< 2秒 |
从选择到生成路径的响应时间 |
| 界面响应时间 |
< 100ms |
控件操作的响应时间 |
| 路径渲染时间 |
< 500ms |
路径可视化渲染时间 |
| 支持并发操作 |
5个 |
同时处理的路径规划请求数 |
性能优化策略
- 异步路径计算避免阻塞UI
- 路径结果缓存
- 增量渲染路径
2.4.1.4. 输入输出项
1. 字段输入输出
输入字段
| 字段名 |
类型 |
必填 |
说明 |
| StartPoint |
Point3D |
是 |
起点坐标 |
| EndPoint |
Point3D |
是 |
终点坐标 |
| ViaPoints |
List |
否 |
途经点列表 |
| ObjectSize |
double |
否 |
物体尺寸(米) |
| Strategy |
PathStrategy |
否 |
路径策略,默认Shortest |
输出字段
| 字段名 |
类型 |
说明 |
| GeneratedPath |
PathRoute |
生成的路径对象 |
| PathLength |
double |
路径长度(米) |
| EstimatedTime |
double |
预估时间(秒) |
| PathPoints |
List |
路径点列表 |
2. 界面交互输入输出
界面输入
- 起点/终点选择按钮
- 途经点添加/删除
- 参数设置控件
- 路径生成按钮
界面输出
- 起终点标记显示
- 路径连线显示
- 路径信息显示面板
- 操作提示信息
2.4.1.5. 算法
动态路径生成算法
算法:根据起终点动态生成路径
输入:起点,终点,途经点,参数
输出:生成的路径
1. 验证起终点有效性
2. 构建路径点序列
- 起点
- 途经点(如果有)
- 终点
3. 调用路径规划算法
4. 生成平滑路径
5. 计算路径长度和时间
6. 返回路径对象
A*路径规划算法
算法:A*寻路算法
输入:起点,终点,网格地图
输出:最优路径
1. 初始化开放列表和关闭列表
2. 将起点加入开放列表
3. 当开放列表不为空:
4. 取出F值最小的节点
5. 如果是终点, reconstruct path
6. 移动到关闭列表
7. 遍历邻居节点:
8. 如果在关闭列表,跳过
9. 计算G、H、F值
10. 如果在开放列表,更新值
11. 否则加入开放列表
12. 返回路径
2.4.1.6. 流程逻辑
开始
│
▼
┌─────────────────┐
│ 打开导航控件 │
└────────┬────────┘
│
▼
┌─────────────────┐
│ 选择起点 │
└────────┬────────┘
│
▼
┌─────────────────┐
│ 选择终点 │
└────────┬────────┘
│
▼
┌─────────────────┐ 是
│ 添加途经点? │──────────┐
└────────┬────────┘ │
│否 │
▼ │
┌─────────────────┐ │
│ 设置规划参数 │ │
└────────┬────────┘ │
│ │
▼ │
┌─────────────────┐ │
│ 点击生成路径 │ │
└────────┬────────┘ │
│ │
▼ │
┌─────────────────┐ │
│ 执行路径计算 │ │
└────────┬────────┘ │
│ │
▼ │
┌─────────────────┐ │
│ 显示路径结果 │◄─────────┘
└────────┬────────┘
│
┌────┴────┐
▼ ▼
┌────────┐ ┌────────┐
│调整参数│ │保存路径│
└───┬────┘ └───┬────┘
│ │
└─────┬─────┘
│
▼
结束
2.4.1.7. 接口
公共接口
/// <summary>
/// 导航地图生成器
/// </summary>
public class NavigationMapGenerator
{
/// <summary>
/// 生成导航路径
/// </summary>
/// <param name="startPoint">起点</param>
/// <param name="endPoint">终点</param>
/// <param name="parameters">路径参数</param>
/// <returns>生成的路径</returns>
public PathRoute GenerateNavigationPath(Point3D startPoint, Point3D endPoint, PathParameters parameters);
/// <summary>
/// 添加途经点
/// </summary>
public void AddViaPoint(Point3D point);
/// <summary>
/// 清除途经点
/// </summary>
public void ClearViaPoints();
/// <summary>
/// 设置路径策略
/// </summary>
public void SetPathStrategy(PathStrategy strategy);
}
/// <summary>
/// 路径参数
/// </summary>
public class PathParameters
{
public double ObjectLength { get; set; }
public double ObjectWidth { get; set; }
public double ObjectHeight { get; set; }
public double SafetyMargin { get; set; }
public PathStrategy Strategy { get; set; }
}
2.4.1.8. 注释设计
代码注释规范
/// <summary>
/// 路径策略枚举
/// </summary>
public enum PathStrategy
{
/// <summary>
/// 最短路径
/// </summary>
Shortest,
/// <summary>
/// 最快路径
/// </summary>
Fastest,
/// <summary>
/// 最安全路径(避开障碍物)
/// </summary>
Safest,
/// <summary>
/// 平衡路径
/// </summary>
Balanced
}
2.4.1.9. 数据结构
PathParameters 结构
| 字段名 |
类型 |
说明 |
| ObjectLength |
double |
物体长度(米) |
| ObjectWidth |
double |
物体宽度(米) |
| ObjectHeight |
double |
物体高度(米) |
| SafetyMargin |
double |
安全间隙(米) |
| Strategy |
PathStrategy |
路径策略 |
| MaxSlope |
double |
最大坡度(度) |
PathStrategy 枚举
| 值 |
说明 |
| Shortest |
优先最短距离 |
| Fastest |
优先最快速度 |
| Safest |
优先最安全 |
| Balanced |
平衡考虑 |
NavigationResult 结构
| 字段名 |
类型 |
说明 |
| Path |
PathRoute |
生成的路径 |
| Success |
bool |
是否成功 |
| Message |
string |
结果消息 |
| CalculationTime |
TimeSpan |
计算耗时 |