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