2.1.3 路径点规划功能设计说明
2.1.3.1. 模块描述
路径点规划模块是物流路径规划系统的核心功能,针对较为复杂的环境,支持路径点功能。用户可以在三维视图中,在通道上点击指定起点、路径点、终点的位置及方向,并以三维可视化的方式显示路径。该模块支持多条路径的保存、选择和编辑,为物流运输提供精确的路径规划能力。
路径点规划模块与PathPlanningManager、PathClickToolPlugin和PathPointRenderPlugin紧密协作,实现从用户交互到路径生成的完整流程。
2.1.3.2. 功能
核心功能
- 路径点创建:在三维视图中点击创建起点、路径点、终点
- 方向设置:为每个路径点设置方向向量
- 路径生成:根据路径点自动生成平滑路径
- 多路径管理:支持多条路径的创建、保存和切换
- 三维可视化:实时显示路径点和路径线
子功能
| 功能编号 |
功能名称 |
功能描述 |
| 2.1.3.F1 |
起点设置 |
在三维视图中指定路径起点 |
| 2.1.3.F2 |
终点设置 |
在三维视图中指定路径终点 |
| 2.1.3.F3 |
中间点设置 |
添加路径中间点进行路径控制 |
| 2.1.3.F4 |
方向调整 |
调整路径点的方向向量 |
| 2.1.3.F5 |
路径预览 |
实时预览生成的路径 |
| 2.1.3.F6 |
路径编辑 |
编辑已有路径的点位置和方向 |
| 2.1.3.F7 |
多路径切换 |
在多条路径之间切换编辑 |
| 2.1.3.F8 |
路径删除 |
删除不需要的路径 |
2.1.3.3. 性能
性能指标
| 指标名称 |
目标值 |
说明 |
| 路径点创建响应 |
< 200ms |
点击到点显示的响应时间 |
| 路径生成时间 |
< 1秒 |
根据路径点生成完整路径的时间 |
| 支持路径点数量 |
> 50个 |
单条路径支持的最大路径点数量 |
| 支持路径数量 |
> 100条 |
支持保存的最大路径数量 |
| 渲染帧率 |
> 30FPS |
路径可视化渲染帧率 |
性能优化策略
- 使用缓存避免重复的路径计算
- 路径点批量渲染,减少Draw Call
- 懒加载策略,非活动路径不渲染
2.1.3.4. 输入输出项
1. 字段输入输出
输入字段
| 字段名 |
类型 |
必填 |
说明 |
| PointType |
PathPointType |
是 |
路径点类型(起点/中间点/终点) |
| Position |
Point3D |
是 |
路径点三维坐标 |
| Direction |
Vector3D |
否 |
路径点方向向量 |
| PathName |
string |
否 |
路径名称 |
输出字段
| 字段名 |
类型 |
说明 |
| PathRoute |
PathRoute |
生成的路径对象 |
| PathLength |
double |
路径总长度 |
| EstimatedTime |
double |
预估通行时间 |
| PathPoints |
List |
路径点列表 |
2. 界面交互输入输出
界面输入
- 鼠标点击选择路径点位置
- 方向调整操作
- 路径参数设置
界面输出
- 三维路径点标记显示
- 路径连线显示
- 路径信息面板显示
2.1.3.5. 算法
路径点插值算法
算法:基于Catmull-Rom样条的路径平滑
输入:路径点列表
输出:平滑路径点列表
1. 对于每对相邻路径点:
2. 计算控制点(使用前后点作为切线参考)
3. 使用Catmull-Rom样条插值生成中间点
4. 将插值点加入结果列表
5. 返回平滑后的路径点列表
路径生成算法
算法:路径点驱动的路径生成
输入:起点、中间点列表、终点
输出:完整路径
1. 创建PathRoute对象
2. 添加起点到路径
3. 对于每个中间点:
4. 计算与前一点的方向向量
5. 添加中间点到路径
6. 添加终点到路径
7. 计算路径长度和预估时间
8. 触发路径生成事件
2.1.3.6. 流程逻辑
开始
│
▼
┌─────────────────┐
│ 进入路径编辑模式 │
└────────┬────────┘
│
▼
┌─────────────────┐
│ 设置起点 │
└────────┬────────┘
│
▼
┌─────────────────┐
│ 添加中间点? │────否────┐
└────────┬────────┘ │
│是 │
▼ │
┌─────────────────┐ │
│ 点击添加中间点 │ │
└────────┬────────┘ │
│ │
└─────────┬─────────┘
│
▼
┌─────────────────┐
│ 设置终点 │
└────────┬────────┘
│
▼
┌─────────────────┐
│ 生成路径预览 │
└────────┬────────┘
│
┌────┴────┐
▼ ▼
┌────────┐ ┌────────┐
│调整点 │ │确认保存│
└───┬────┘ └───┬────┘
│ │
└─────┬─────┘
│
▼
结束
2.1.3.7. 接口
公共接口
/// <summary>
/// 路径规划管理器
/// </summary>
public class PathPlanningManager
{
/// <summary>
/// 添加路径点
/// </summary>
/// <param name="position">点位置</param>
/// <param name="type">点类型</param>
/// <returns>创建的路径点</returns>
public PathPoint AddPathPoint(Point3D position, PathPointType type);
/// <summary>
/// 生成路径
/// </summary>
/// <returns>生成的路径</returns>
public PathRoute GeneratePath();
/// <summary>
/// 获取当前路径
/// </summary>
/// <returns>当前路径</returns>
public PathRoute GetCurrentRoute();
/// <summary>
/// 切换当前路径
/// </summary>
/// <param name="routeName">路径名称</param>
public void SwitchRoute(string routeName);
}
事件接口
/// <summary>
/// 路径点添加事件
/// </summary>
public event EventHandler<PathPointAddedEventArgs> PathPointAdded;
/// <summary>
/// 路径生成完成事件
/// </summary>
public event EventHandler<PathGeneratedEventArgs> PathGenerated;
/// <summary>
/// 当前路径变更事件
/// </summary>
public event EventHandler<RouteChangedEventArgs> CurrentRouteChanged;
2.1.3.8. 注释设计
代码注释规范
/// <summary>
/// 路径点类型
/// </summary>
public enum PathPointType
{
/// <summary>
/// 起点
/// </summary>
Start,
/// <summary>
/// 中间点(路径点)
/// </summary>
WayPoint,
/// <summary>
/// 终点
/// </summary>
End
}
/// <summary>
/// 路径点类
/// 表示路径上的一个关键节点
/// </summary>
public class PathPoint
{
/// <summary>
/// 点唯一标识
/// </summary>
public string Id { get; set; }
/// <summary>
/// 点位置(模型单位)
/// </summary>
public Point3D Position { get; set; }
/// <summary>
/// 点方向(用于控制路径走向)
/// </summary>
public Vector3D Direction { get; set; }
}
2.1.3.9. 数据结构
PathPoint 结构
| 字段名 |
类型 |
说明 |
| Id |
string |
点唯一标识符 |
| Position |
Point3D |
三维坐标位置 |
| Direction |
Vector3D |
方向向量 |
| Type |
PathPointType |
点类型 |
| Index |
int |
在路径中的索引 |
PathRoute 结构
| 字段名 |
类型 |
说明 |
| Id |
string |
路径唯一标识符 |
| Name |
string |
路径名称 |
| Points |
List |
路径点列表 |
| TotalLength |
double |
路径总长度(米) |
| EstimatedTime |
double |
预估通行时间(秒) |
| CreateTime |
DateTime |
创建时间 |
PathPointAddedEventArgs 结构
| 字段名 |
类型 |
说明 |
| Point |
PathPoint |
添加的路径点 |
| PointIndex |
int |
点索引 |
| TotalPoints |
int |
当前总点数 |