NavisworksTransport/doc/working/channel_slope_profile_analysis20250830.md

4.8 KiB
Raw Blame History

通道坡度轮廓分析技术方案

问题背景

在路径规划过程中,我们遇到了斜坡通道的高度计算问题:

当前系统的局限性

  1. 网格构建阶段使用线性插值计算Z坐标无法准确反映斜坡的真实高度变化
  2. 混合通道处理:对于"一段斜坡+一段平面"的组合通道,现有的SlopeAnalyzer会计算平均坡度,丢失局部变化信息
  3. 路径规划精度:在斜坡上可能产生高度计算错误,影响碰撞检测和动画效果

具体问题表现

  • 斜坡通道的不同XY位置有不同的Z坐标表面高度
  • 网格构建时使用传统插值无法反映斜坡的真实高度变化
  • 组合坡度通道(斜坡+平面)被简化为单一坡度处理

核心技术思路

🎯 关键洞察

从3D分析降维到2D轮廓分析

  • 通道侧面轮廓清晰显示坡度变化
  • 只关注通道上表面边缘线,问题简化为2D曲线分析
  • 沿通道长度方向的Z坐标变化就是坡度信息

💡 方法优势

  1. 精度高:直接基于实际几何形状,不受平均化影响
  2. 效率好2D轮廓分析比3D体积分析计算量小
  3. 适应性强:支持复杂的多段坡度和弯曲通道

技术实现方案

方案1边缘轮廓采样法

// 实现步骤伪代码
var channelBounds = channel.Geometry.BoundingBox;

// 1. 确定通道主轴方向
var mainDirection = DetermineChannelMainDirection(channelBounds);

// 2. 提取上表面边缘轮廓
var topSurfaceEdges = ExtractTopSurfaceEdges(channelGeometry);

// 3. 沿主轴方向高密度采样
var profilePoints = SampleEdgeProfile(topSurfaceEdges, samplingDensity: 0.2); // 每20cm采样

// 4. 分析坡度变化
var slopeSegments = AnalyzeHeightProfile(profilePoints);

方案2几何面分析法

// 分析通道轮廓的坡度分段
var slopeChanges = new List<SlopeChangePoint>();
for (int i = 1; i < profileLine.Points.Count; i++)
{
    var localSlope = CalculateLocalSlope(profileLine.Points[i-1], profileLine.Points[i]);
    
    // 检测坡度突变点
    if (Math.Abs(localSlope - previousSlope) > SLOPE_CHANGE_THRESHOLD)
    {
        slopeChanges.Add(new SlopeChangePoint(position, localSlope));
    }
}

坡度分段识别算法

  1. 局部坡度计算slope = (z2-z1)/distance
  2. 变化点检测:坡度变化 > 阈值的位置
  3. 自动分割平面段slope < 1°、斜坡段、过渡段
  4. 区段映射:为每个网格分配对应区段的坡度信息

现有技术基础

可利用的组件

  1. GeometryExtractor.cs:已有空间分析功能
  2. COM API:可以提取通道的几何面信息和边界数据
  3. SlopeAnalyzer.cs:现有的坡度分析框架,可扩展支持分段分析
  4. ChannelHeightDetector.cs:精确高度计算能力

扩展点

// 扩展ChannelSlopeInfo支持多段坡度
public class ChannelSlopeInfo
{
    // 现有字段...
    
    // 新增:坡度段列表
    public List<SlopeSegment> SlopeSegments { get; set; }
}

public class SlopeSegment
{
    public Point3D StartPoint { get; set; }
    public Point3D EndPoint { get; set; }
    public double LocalSlopeAngle { get; set; }
    public SlopeType SegmentType { get; set; } // Flat, Ramp, etc.
}

实施计划

阶段1轮廓提取验证

  • 研究Navisworks COM API的几何提取能力
  • 实现通道上表面边缘线提取
  • 验证轮廓采样的精度和性能

阶段2坡度分析增强

  • 扩展SlopeAnalyzer支持分段分析
  • 实现坡度变化点自动检测
  • 开发区段到网格的映射机制

阶段3集成和优化

  • 集成到GridMapGenerator的通道处理流程
  • 为网格单元记录精确的坡度信息
  • 性能优化和缓存机制

技术挑战

1. 几何提取复杂性

  • 正确识别"上表面"vs侧面、底面
  • 处理复杂几何形状和不规则边界
  • 边缘线可能不连续或有噪声

2. 采样和平滑策略

  • 采样密度影响精度和性能的平衡
  • 处理小幅波动和测量噪声
  • 坡度变化阈值的合理设定

3. 集成复杂度

  • 与现有网格生成流程的集成
  • 缓存机制和性能优化
  • 多种通道类型的统一处理

预期收益

1. 路径规划精度提升

  • 斜坡通道的高度计算准确
  • 支持复杂的组合坡度模式
  • 避免路径规划中的"飞行"或"穿地"问题

2. 动画质量改善

  • 车辆在斜坡上的倾斜角度准确
  • 平滑的坡度过渡动画
  • 真实的物理运动模拟

3. 系统扩展性

  • 为未来的高级路径优化奠定基础
  • 支持更复杂的通道类型分析
  • 提供精确的空间几何数据

记录时间2025-08-29 状态:技术方案设计完成,待验证实施 优先级:高(影响路径规划核心精度)