zoukankan      html  css  js  c++  java
  • 球面两点间的角距离应用

    问题1:给出目的地,计算自己所在地点到目的地的距离?

    通过GPRS,可以测量出自己所在地和目的地的经纬度。

    然后所在地,目的地和地心,这三点在同一平面上形成一个弧形。

    只要求出弧形的角度,即两点的角距离,就能求出弧形的弧长,即两点的球面距离。

    问题2:给出指定时间,计算出该时间点,某建筑的影子长度?(注:影子是切面影面,并不是球面影子)

    太阳入射点,指的是太阳连接地心的直线,与地面的交点的经纬度。

    通过指定时间,可以计算出太阳的入射点的经纬度。

    通过GPRS,可以测量出某建筑所在位置的经纬度。

    建筑所在切面上形的形子,与建筑构成直角三角形。

    太阳连接地心的直线与建筑点的切面有一个交点,这个交点到建筑点的连线,与建筑点到地心的连线构成直角三角形。

    两个三角形相似,只要求出太阳入射点与建筑点的角距离,就能求出影子长。

    问题3:已知两点的经纬度,如何求出两点的角距离?

    假设:两点A和B的经纬度分别为(α1,β1),(α2,β2)。

    在空间上,经纬度的含意是,点(0,r,0)先绕x轴旋转β度,再绕Z轴旋转α度,r是球体半径,即地球的半径。

    根据这个含意,可以得出坐标(x1,y1,z1):

      x1 = r*cos(β1)*cos(α1)

      y1 = r*cos(β1)*sin(α1)

      z1 = r*sin(β1)

    同理得出坐标(x2,y2,z2)。

    根据两点距离公式,可以得出:

      AO = r

      BO = r

      AB = r * √(2 - 2*cos(β1)*cos(β2)*cos(a1-a2) - 2*sin(α1)*sin(α2))

    已知三边,得出AOB:

      AOB = arccos( cos(β1)*cos(β2)*cos(a1-a2) + sin(α1)*sin(α2) )

    总结:

    两点间的球面距离公式:AB = r * ∠AOB,r为地球半径。

    建筑的切面影长公式:l = h * tan(∠AOB),h为建筑高度。

  • 相关阅读:
    Eclipse 远程调试
    大数据处理方法bloom filter
    sicily 1259 Sum of Consecutive Primes
    sicily 1240. Faulty Odometer
    sicily 1152 简单马周游 深度优先搜索及回溯算法
    sicily 1050 深度优先搜索解题
    sicily 1024 邻接矩阵与深度优先搜索解题
    sicily 1156 二叉树的遍历 前序遍历,递归,集合操作
    sicily 1443 队列基本操作
    sicily 1006 team rankings 枚举解题
  • 原文地址:https://www.cnblogs.com/hvicen/p/6054628.html
Copyright © 2011-2022 走看看