如何判断某个人是否在经纬度域内

dawangzhu 2010-07-12 05:38:46
如何判断某个人是否在 以39.909736,116.40976(北京经纬度)为圆心,100m为半径的范围?

已经知道这个人的经纬度
...全文
189 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
baihacker 2010-07-12
  • 打赏
  • 举报
回复
X[i] = cos(data[i].first) * sin(data[i].second);
Y[i] = cos(data[i].first) * cos(data[i].second);
Z[i] = sin(data[i].first);

first是纬度,second是经度

d*acos(X[i]*X[j]+Y[i]*Y[j]+Z[i]*Z[j])/2

d是直径。
baihacker 2010-07-12
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 hqin6 的回复:]
球面两点最短距离是过这两点的大圆(半径等于球体的半径)的劣弧。

已知两地的经度分别为σ1、σ2,纬度分别为 φ1、φ2,求两地最近距离的公式为:
S=2πRθ/360° (1)

其中θ可由下面的式子求得:

[sin(θ/2)]^2=[sin(φ1-φ2)/2]^2+[sin(σ2-σ1)/2]^2cosφ1cosφ2 (2)

注:1、式中S为球面上任意两点的最短距离(球面……
[/Quote]
哇哈哈。
太乙 2010-07-12
  • 打赏
  • 举报
回复
球面两点最短距离是过这两点的大圆(半径等于球体的半径)的劣弧。

已知两地的经度分别为σ1、σ2,纬度分别为 φ1、φ2,求两地最近距离的公式为:
S=2πRθ/360° (1)

其中θ可由下面的式子求得:

[sin(θ/2)]^2=[sin(φ1-φ2)/2]^2+[sin(σ2-σ1)/2]^2cosφ1cosφ2 (2)

注:1、式中S为球面上任意两点的最短距离(球面距离);

2、 θ为两点间的张角,在运用(2)式求θ时,纬度φ和经度σ本身有正负号,通常北纬正,南纬负;东经正,西经负。

3、因不会用上下标,所以式中^2指平方; cosφ1cosφ2、σ2-σ1 、φ1-φ2中的1和和2为下标。
baihacker 2010-07-12
  • 打赏
  • 举报
回复
假设是正球,知道经纬度,就知道了其坐标:
r * (cos纬度cos经度,cos纬度sin经度,sin纬度)
知道设人和圆心坐标分别为X,Y(同时对应起点在原点的向量),现在主要是想求出X,Y这两个向量的夹角。
很明显通过 内积 = 长度*长度cos夹角。
于是得到两个角度值(实际上总是取小的那个)。
知道了这个夹角,知道了球的半径,就能求出球面距离了。
dawangzhu 2010-07-12
  • 打赏
  • 举报
回复
但不知道用什么公式
dawangzhu 2010-07-12
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 hqin6 的回复:]

引用 3 楼 dawangzhu 的回复:

纯数学问题,但我就是想不明白该怎么比较。
这个要精确很难,毕竟地球不是正球型,而且就算是,地面也不一定平整。。。如果算个大概,lz可以参考球两点距离的算法(相当于扇形弧长)
[/Quote]

刚看到其他人回复,是这样的
可以用公式计算出两点之间的距离,然后与100进行比较即可
太乙 2010-07-12
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 dawangzhu 的回复:]

纯数学问题,但我就是想不明白该怎么比较。
[/Quote]这个要精确很难,毕竟地球不是正球型,而且就算是,地面也不一定平整。。。如果算个大概,lz可以参考球两点距离的算法(相当于扇形弧长)
dawangzhu 2010-07-12
  • 打赏
  • 举报
回复
纯数学问题,但我就是想不明白该怎么比较。
太乙 2010-07-12
  • 打赏
  • 举报
回复
这个是不是要用球面积公式??地球根本就不是正球型的。。。。100m,很小的,直接当做平面就好了,误差应该不大~~~
soswaidao 2010-07-12
  • 打赏
  • 举报
回复
CRect

3,881

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 其它技术问题
社区管理员
  • 其它技术问题社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧