1. 在PathPlanningManager中添加_previewInsertIndex字段保存预览插入索引 2. 添加FindNearestLineSegmentWithIndex等方法计算最近线段和插入位置 3. 修改SetPreviewPoint方法,在设置预览点时计算并保存插入索引 4. 修改ConfirmPreviewPoint方法,使用Insert()而不是Add()进行插入操作 5. 修改ClearPreviewPoint方法,清除预览时也清除保存的插入索引 问题:之前预览连线工作正常能显示正确插入位置,但确认添加时新路径点被错误地添加到路径末尾 解决:现在新路径点会插入到预览时计算出的正确位置,确保路径点顺序符合用户期望 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
1.9 KiB
1.9 KiB
路径点插入位置修复测试
问题描述
修复了预览连线功能工作正常,但确认添加路径点时,新的路径点被错误地添加到路径末尾,而不是插入到预览时计算出来的正确位置的问题。
修改内容
1. 在 PathPlanningManager 中添加字段保存预览插入的索引位置
private int _previewInsertIndex = -1; // 保存预览点应该插入的索引位置
2. 添加了查找最近线段的方法
FindNearestLineSegmentWithIndex()- 查找最近线段并返回插入索引CalculatePointToLineSegmentDistance()- 计算点到线段距离CalculateDistance()- 计算两点间距离
3. 修改 SetPreviewPoint 方法
- 在设置预览点时,计算并保存最佳插入位置索引
- 当路径中有至少2个点时,调用
FindNearestLineSegmentWithIndex()计算插入位置
4. 修改 ConfirmPreviewPoint 方法
- 使用保存的
_previewInsertIndex进行Insert()操作,而不是Add() - 如果没有有效插入索引,则回退到原来的添加到末尾的行为
5. 修改 ClearPreviewPoint 方法
- 清除预览时也清除保存的插入索引
测试步骤
- 创建新路径,添加至少2个路径点
- 启用添加路径点模式
- 将鼠标移动到两个现有路径点之间的位置
- 观察预览连线是否正确显示插入位置
- 点击确认添加路径点
- 验证新路径点是否插入到预览显示的正确位置,而不是路径末尾
预期结果
- 预览连线正确显示新路径点应该插入的位置
- 确认添加时,新路径点插入到预览时计算的正确位置
- 路径点顺序符合用户的期望
技术细节
- 插入索引的计算基于点到线段的最短距离
- 使用了几何算法计算点到线段的垂直距离
- 插入索引是最近线段的第二个点的索引位置
- 例如:如果最近线段是点1到点2,新点应该插入到索引2的位置