zoukankan      html  css  js  c++  java
  • 测边交会

    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 代数推导

  • 相关阅读:
    zendstuido10 配置spket插件
    Extjs各版本的下载链接
    主题:Android、iPhone和Java三个平台一致的加密工具
    TestDisk 恢复rm -rf 的文件
    java实现定时任务的三种方法
    mac 下安装 lua5.3 + cjson
    Mac OS X 上Lua的安装方法
    Channel States
    JSON常见操作
    微信小程序——获取元素的宽高等属性
  • 原文地址:https://www.cnblogs.com/hanford/p/6181989.html
Copyright © 2011-2022 走看看