Python 计算三点之间的角度

Python 计算三点之间的角度,python,Python,我想做一个代码来计算3个点之间的角度。 我使用函数,函数本身没有问题。 但是,在我的例子中,下面的lineA和lineB是变量,所以我认为问题的出现是因为这一点。 先谢谢你 def dot(vA, vB): return vA[0]*vB[0]+vA[1]*vA[1] def ang(lineA, lineB): vA = [(lineA[0][0]-lineA[1][0]), (lineA[0][1]-lineA[1][1])] vB = [(lineB[0][0]-

我想做一个代码来计算3个点之间的角度。 我使用函数,函数本身没有问题。 但是,在我的例子中,下面的lineA和lineB是变量,所以我认为问题的出现是因为这一点。 先谢谢你

def dot(vA, vB):
    return vA[0]*vB[0]+vA[1]*vA[1]

def ang(lineA, lineB):
    vA = [(lineA[0][0]-lineA[1][0]), (lineA[0][1]-lineA[1][1])]
    vB = [(lineB[0][0]-lineB[1][0]), (lineB[0][1]-lineB[1][1])]
    dot_prod = dot(vA, vB)
    magA = dot(vA, vA)**0.5
    magB = dot(vB, vB)**0.5
    cos_ = dot_prod/magA/magB
    #angle = math.acos(dot_prod/magB/magA)
    angle = math.acos(cos_)
    ang_deg = math.degrees(angle)%360
    if ang_deg-180>=0:
        return 360 - ang_deg
    else:
        return ang_deg

an1=1
an2=1.5
an3=2
an4=2
an5=2.5
an6=0.5
angle1=ang(lineA=((an1,an2), (an5,an6)), lineB=((an1,an2), (an3,an4)))
这只是一个打字错误

def dot(vA, vB):
    return vA[0]*vB[0]+vA[1]*vA[1]
                           # ^^^^^ should be vB[1]

错误是什么?您需要什么样的帮助?你到底想要什么?对不起。错误是angle=math.acoscos\ux中的“数学域错误”。但是,当我把坐标直接输入到直线A和直线B中时,没有问题。你能告诉我们当你得到错误时使用的值吗?我怀疑这些点在某个地方导致了0的除法。值在代码中。an1~an6