指向大圆段距离
回答
这是交叉轨道距离described here
dxt = asin(sin(δ13) ⋅ sin(θ13−θ12)) ⋅ R
where
δ13 is (angular) distance from start point to third point
θ13 is (initial) bearing from start point to third point
θ12 is (initial) bearing from start point to end point
R is the earth’s radius
可以计算出所需的距离,并使用公式从给定的页面轴承
distance
a = sin²(Δφ/2) + cos φ1 ⋅ cos φ2 ⋅ sin²(Δλ/2)
c = 2 ⋅ atan2(√a, √(1−a))
d = R ⋅ c
where
φ is latitude, λ is longitude, R is earth’s radius (mean radius = 6,371km);
bearing
θ = atan2(sin Δλ ⋅ cos φ2 , cos φ1 ⋅ sin φ2 − sin φ1 ⋅ cos φ2 ⋅ cos Δλ)
where
φ1,λ1 is the start point, φ2,λ2 the end point (Δλ is the difference in longitude)
注意,角度需要采用弧度传递到三角函数
因此对不起,我将删除我的评论。 – Blindman67
球形至2D笛卡尔
如果距离不是太远,周围没有极奇点你既可以线段和线路从你的观点,并垂直于你的段球面坐标的发光转换(如果它们还没有)并且使用2个角度作为笛卡尔空间(忽略半径)。
- 计算交点
- 转换回点和交叉点之间的球面
计算弧长
很难说,如果你使用的球或WGS84还是什么....
笛卡尔3D
您可以将圆弧段作为3D线处理,并在发现相交时将其投影到曲面上。事情是这样的:在3D笛卡尔
项目回地表
对于球面
- 行查找与正常的交点就是这个简单的投影意味着将矢量长度更改为
R
(如果球体以(0,0,0)
为中心)。 2分为球形表面也是简单之间
计算弧长只是计算相交点和之间的角度...
ang = acos(dot(intersection,point)); // [radians]
,并转换为弧长
d = ang*R; // [same Units as R]
- 行查找与正常的交点就是这个简单的投影意味着将矢量长度更改为
我正在使用WGS84。 – user2033412
@ user2033412更复杂一点......投影迭代完成以提高精度...您只需搜索'lat'直到它适合'x,y,z'开始球面投影,然后更改'lat '以最小化距离... – Spektre
@ user2033412请参阅[如何将球面速度坐标转换为笛卡尔](https://stackoverflow.com/a/41161714/2521214)以及链接的答案,以获得一些其他想法... – Spektre
- 1. 大圆距离C++
- 2. 用SQLite计算大圆距离
- 3. 大圆距离加上高度变化
- 4. 奇怪的大圆距离计算
- 5. 圆周距离问题
- 6. 椭圆测量距离
- 7. 圆分离距离 - 最近邻问题
- 8. 反向Levenshtein距离
- 9. 随机在一个圆圈内设置一段距离产卵
- 10. 使用lat/long SRID的PostGIS中的真实(大圆圈)距离?
- 11. 如何测试正确的大圆距离计算?
- 12. 距离点到线大圆功能不能正常工作。
- 13. 大圆距离的赤道平面的NAN值和计算角
- 14. Voronoi图使用自定义(大圆)距离
- 15. 如何在T-SQL中使用大圆距离计算
- 16. Python - SqlAlchemy:按大圆距离过滤查询?
- 17. 如何圆一个GeoDjango内置距离
- 18. 绘制椭圆时增加距离
- 19. 处理:线和圆的交点距离
- 20. 多段线的距离
- 21. AGREP最大距离参数
- 22. LINQ的最大距离表
- 23. OpenXML距离,大小单位
- 24. 最大。蓝牙距离
- 25. Three.js FogExp2与最大距离?
- 26. 在距离10处的圆圈内画一个圆圈
- 27. d3如何均衡距离中心圆周上的物体的距离
- 28. 在距离彼此最小距离的圆上随机产生数量的GameObjects
- 29. 距离某一点的线段距离上的点
- 30. 在PostgreSQL中计算点和圆之间的距离,用于圆半径和距离的单位是什么?
我想你可能有更多的运气与此有关mathematics.stackexchange –
我投票关闭这一问题作为题外话,因为它是关于[math.se]而不是编程或软件开发。 – Pang