• 测边交会


    1计算公式    1

    1.1 排列顺序    1

    1.2 计算公式一    2

    1.3 排列顺序的判定    3

    1.4 计算公式二    3

    2精度评定    6

    2.1 几何推导    6

    2.2 代数推导    7

    1计算公式

    如下图所示,已知AB点的坐标,通过测量APBP的长度即可求出点P的坐标。这种定位方法就是测边交会。

    1.1 排列顺序

    为了下面讨论的方便,引入变量sign,它的数值说明了ABP的排列顺序:ABP的排列顺序与方位角的增加方向一致时sign取值为1;否则sign取值为-1。下图是数学系,ABP为逆时针排列,与方位角的增加方向一致,因此sign1

    图1.1

    下图是测量系,ABP为顺时针排列,与方位角的增加方向一致,因此sign1

    图1.2

    1.2 计算公式一

    下面的公式非常适合于编程:

    验证上面公式的C代码如下:

    srand(time(NULL));

    double xA = rand();

    double yA = rand();

    double xB = rand();

    double yB = rand();

    double xP = rand();

    double yP = rand();

    double AP = _hypot(xA - xP,yA - yP);

    double BP = _hypot(xB - xP,yB - yP);

    double sign = 1.0;

    if((yP - yA) * (xB - xA) - (xP - xA) * (yB - yA) < 0.0)

    {//A,B,P与方位角增加方向相反。矢量AB叉乘矢量APz轴分量小于零

    sign = -1.0;

    }

    double AB = _hypot(xA - xB,yA - yB);

    double aAB = atan2(yB - yA,xB - xA);

    double A = acos((AB*AB + AP*AP - BP*BP) / (2.0*AB*AP));

    double XP = xA + AP * cos(aAB + A * sign);

    double YP = yA + AP * sin(aAB + A * sign);

    double deltaX = XP - xP;

    double deltaY = YP - yP;

    验证方法:deltaXdeltaY应该接近于零。

    1.3 排列顺序的判定

    1.4 计算公式二

    整理一下,这套公式的计算步骤如下

    验证上面公式的C代码如下:

    srand(time(NULL));

    double xA = rand();

    double yA = rand();

    double xB = rand();

    double yB = rand();

    double xP = rand();

    double yP = rand();

    double AP = _hypot(xA - xP,yA - yP);

    double BP = _hypot(xB - xP,yB - yP);

    double sign = 1.0;

    if((yP - yA) * (xB - xA) - (xP - xA) * (yB - yA) < 0.0)

    {//A,B,P与方位角增加方向相反。矢量AB叉乘矢量APz轴分量小于零

    sign = -1.0;

    }

    double AB = _hypot(xA - xB,yA - yB);

    double S4 = sqrt((AB + AP + BP) * (-AB + AP + BP) * (AB - AP + BP) * (AB + AP - BP));

    double XP = (xA*(AB*AB+BP*BP-AP*AP)+xB*(AB*AB+AP*AP-BP*BP)+S4*sign*(yA-yB))/(2.0*AB*AB);

    double YP = (yA*(AB*AB+BP*BP-AP*AP)+yB*(AB*AB+AP*AP-BP*BP)+S4*sign*(xB-xA))/(2.0*AB*AB);

    double deltaX = XP - xP;

    double deltaY = YP - yP;

    验证方法:deltaXdeltaY应该接近于零。

    2精度评定

    2.1 几何推导

    下面研究边长BP增加微小量dBP后,对P点位置的影响有多大?请参考下图。

    图2.1

    2.2 代数推导

  • 相关阅读:
    将博客搬至CSDN
    神州笔记本电脑【K670D】安装 Ubuntu18.04 系列操作
    ValueError: Unknown label type: 'continuous'
    Spark: JAVA_HOME is not set
    IDEA 搭建 Spark 源码 (Ubuntu)
    XX-Net 解决IPV6 不稳定,时好时坏。
    解决SBT下载慢,dump project structure from sbt?
    pip install kaggle 出现 【网络不可达】?
    Git clone 克隆Github上的仓库,速度慢?
    进程间的通信方式
  • 原文地址:https://www.cnblogs.com/hanford/p/6181989.html
Copyright © 2020-2023  润新知