• 公路工程三维坐标系研究


    作者: 姚彧
    版本历史:

    版本 日期 说明
    0.1 2018-08-07 创建文档
    0.2 2018-08-09 加入公路基础
    0.2.1 2018-08-10 自由基底符合左手法则

    版权声明:本文为作者原创文章,博客地址:https://www.cnblogs.com/yaoyu126 未经作者允许不得转载。

    目标

    • [x] 建立公路工程三维坐标系

    1. 引言

    在公路三维建模中, 为了清晰、简洁的表达公路三维模型,我们需要各种三维坐标系。本文尝试通过应用空间向量的原理,对公路三维建模所需的坐标系进行抛砖引玉。

    1.1. 数学基础

    1.1.1 向量(Vector)

    向量指具有大小和方向的量。

    1.1.2 基(Basic,基底)

    1.1.2.1 线性无关

    在一个向量空间(V_n)中,假设:

    (a_1e_1 + ⋯ + a_ne_n = 0)  (式1)

    只在 (a_1 = ⋯ = a_n = 0) 时成立,那么向量 ({e_1, e_2, ..., e_n}) 是线性无关的。
    如果任何 (a_i) 不为零,那么这些向量是线性相关的,其中一个向量是其他向量的组合。

    1.1.2.2 基底

    在向量空间(V_n)中,任意向量(P)都可以由一组(n)个线性无关的向量集(B_n)组成,这样的向量集(B_n)称为基底(基)。其定义如下:
    向量空间 (V_n) 的基底 (B_n) 是一组 (n) 个线性无关的向量 ({e_1, e_2, ..., e_n})
    对于任何 (V_n) 的向量 (P),都存在实数 ({a_1, a_2, ..., a_n}),使得

    $P = a_1e_1 + ⋯ + a_ne_n $  (式2)

    1.2. 公路工程基础

    1.2.1 公路的组成

    公路的主要组成部分:路基、路面、桥梁、涵洞、隧道、绿化、排水、防护及其它设施等。

    1.2.2 路线

    公路路线是指公路平面线形、纵断面线形、横断面及其三者相结合的三维空间线形的总称。

    1.2.3 结构物

    公路结构物主要是桥梁、涵洞、立交、跨线桥、支挡结构物等。结构物一般都是沿路线进行布置。

    2. 公路工程三维坐标系

    基于向量空间 的定义, 在三维空间中, 可以使用任意 基底 来表达模型物体。根据公路三维特点,本文定义了如下公路三维基底

    2.1 路线基底 (B_r)

    对于路线,直接使用笛卡尔基底(即单位矩阵(M_r = I_3 = (V_r, V_f, V_u))来表示坐标:

    (P_r=(X, Y, Z) cdot M_r)

    在将路线三维坐标映射到桩号基底时,需要用到 (M_r) 的逆矩阵 (M_r)

    2.1.1 基向量之间的关系

    基向量之间的关系符合右手法则

    (V_r = V_f imes V_u)
    (V_u = V_r imes V_f)
    (V_f = V_u imes V_r)

    2.2 桩号基底 (B_s)

    首先,对于路线局部区域,可以建立以路线设计线指定桩号中心为基准的桩号基底

    2.2.1 桩号基底的选择

    在任意中心桩号, 选择如下正交向量组({B_3})作为基底:

    • 向前(基向量,(V_f)), 路线水平前进方向
    • 向右(基向量,(V_r)), 路线水平前进方向右转(90^o)
    • 向上(基向量,(V_u)), 竖直方向

    2.2.2 桩号基底的存储

    为了将横断面转换到三维, 使用((V_r, V_u))分量保存横断面坐标, 这样横断面从二维转到三维只需要第三分量设为0, 即(x, y, 0).
    将前进方向保存在第三分量上, 这样就组成了桩号基底((V_r, V_u, V_f)), 我们用单位矩阵(M_s=I_3)表示.

    因为分量定义顺序的原因, 桩号基底满足下列关系:

    • (V_f = V_r imes V_u)
    • (V_r = V_u imes V_f)
    • (V_u = V_f imes V_r)

    2.2.3 桩号基底的特点

    • 将存储结果与实际情况对比, 造成了桩号基底符合 左手法则, (右, 上, 前), 在应用时, 需要注意。
    • 真实的笛卡尔向量, 需要通过笛卡尔基底还原

    (P_r cdot M_r = P_s cdot M_0 cdot egin{bmatrix} 0 & -1 & 0 \ 0 & 0 & 1\ 1 & 0 & 0 end{bmatrix} cdot M_l = P_s cdot egin{bmatrix} 0 & -1 & 0 \ 0 & 0 & 1\ 1 & 0 & 0 end{bmatrix} cdot M_l = P_s cdot M_s)
    注: (M_0 = I_3)

    2.3 自由基底 (B_{f})

    2.3.1 自由基底的选择

    选择如下自由向量组({B_3})作为基底:

    • 向前(基向量,(V_f)), 路线前进方向
    • 向右(基向量,(V_r)), 路线前进方向右转指定角度
    • 向上(基向量,(V_u)), 竖直方向

    2.3.2 自由基底的矩阵表达

    自由基底采用与桩号基底同样的分量((V_r, V_u, V_f))。

    2.3.3 自由基底的特点

    自由基底适合于对模型应用错切变换。

    2.3.4 应用方式

    (P_r = P_f cdot M_f cdot M_s)

    即对物体模型先应用自由基底,然后再应用路线基底

    3. 公路三维坐标系应用

    3.1 计算桩号在路线中的位置矩阵

    路线前进方向在笛卡尔坐标系中进行计算
    (V_f = P_e - P_s)
    其中:(P_e,P_s)中z分量=0
    (V_u = [0,0,1])
    (V_r = V_f imes V_u)
    $M_s = [V_r, V_u, V_f] Leftrightarrowegin{bmatrix}
    0 & -1 & 0
    0 & 0 & 1
    1 & 0 & 0
    end{bmatrix} cdot M_l $
    基点: $ P_s $

    齐次位置矩阵为:

    (M_s = egin{bmatrix} V_r & 0 \ V_u & 0 \ V_f & 0 \ P_s & 1 end{bmatrix})

    最后, 以桩号基底(B_s)表示的齐次坐标点(P_s = [P_s, 1])最终在路线基底(B_r)中表示为

    (P_r = P_s cdot M_s)

    3.2 计算任意公路点在桩号坐标系中的位置

    使用 (M_s) 的逆矩阵 (M_s ^ mathrm{ -1 }) 来计算点在桩号坐标系中的位置

    $ P_s = P_r imes M_s ^ mathrm{ -1 } $

  • 相关阅读:
    C++ | 变量缩写
    C++_数据类型和操作
    Python_pandas处理数据格式和统计频次
    C++_分离编译与Cmake
    C++_输入和输出示例
    C++字符串分割
    Pytorch_yoloV5预测数据非结构数据结构化
    Pytorch_模型部署和推断
    mysql触发器
    【分布式ID】雪花、TDDLSEQUENCE、UUID
  • 原文地址:https://www.cnblogs.com/yaoyu126/p/9445748.html
Copyright © 2020-2023  润新知