我在地球上有一个线段(大圆圈部分).线段由其末端的坐标定义.显然,两个点定义了两个线段,所以假设我对较短的线段感兴趣.
我得到了第三点,我正在寻找线和点之间的(最短)距离.
所有坐标均以经度\纬度(WGS 84)给出.
我该如何计算距离?
任何合理的编程语言都可以使用解决方案.
我想在线段AB上找到一个点,该点最接近另一个点P。
我的想法是:
a1和b1获取线型公式y1 = a1x + b1。a1和P坐标获取法线公式y2 = a2x + b2。y1和y2下一个使用上面的公式之一来获得交点x坐标,以得到y。我的代码:
#include <SFML\Graphics.hpp>
#include <iostream>
sf::Vector2f getClosestPointOnLine(sf::Vector2f A, sf::Vector2f B, sf::Vector2f P)
{
//convert to line formula
float a = (B.y - A.y)/(B.x - A.x);
float b = -a * A.x + A.y;
//get normal line formula
float a2 = -a / 2;
float b2 = -a2 * P.x + P.y;
//get x …Run Code Online (Sandbox Code Playgroud)