如何检查一个点是否在其他两个点之间,但不限于在一条直线上对齐?

Dan*_*ist 1 math geometry coordinates

我需要检查纬度坐标 ( A) 是否在另外两个纬度坐标 (BC) 之间。但是,重点A不一定要在线上B->C
参考这张图,这里A应该算作“介于”BC

在此处输入图片说明

我怎样才能做这个计算?

PS:位置可以转换为SWEREF99TM,这是一个网格系统,如果这样计算更好。我已经有了该转换的公式。

Kev*_*vin 5

假设我们在一个平面上而不是一个球体上,即使你提到了纬度/经度......

如果角度θABC和角度θACB都小于或等于九十度,则A在B和C“之间”。

方便的是,我们甚至不需要三角函数来检测它;如果 PQ^2 + QR^2 < QR^2,角度 ?PQR 大于九十度。

def lies_between(A,B,C):
    a = distance(B,C)
    b = distance(C,A)
    c = distance(A,B)
    return a**2 + b**2 >= c**2 and a**2 + c**2 >= b**2

def distance(A,B):
    return math.sqrt((A.x - B.x)**2 + (A.y - B.y)**2)
Run Code Online (Sandbox Code Playgroud)

**求幂运算符在哪里。)