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为建筑高度。

  • 相关阅读:
    Linux关闭jetty服务器脚本
    TreeMap 源码解读
    LinkedHashMap 源码解读
    HashTable 源码解读
    MappedByteBuffer文件句柄释放问题
    HashMap源码解读
    Java 对象创建过程
    java 虚拟机内存介绍
    dubbo 部署
    kotlin 学习入门
  • 原文地址:https://www.cnblogs.com/hvicen/p/6054628.html
Copyright © 2011-2022 走看看