Pythonで2本の線の間の角度を計算しようとしています。私はインターネットを検索し、それを行う方法の方程式を見つけました。しかし、常に正確な結果が得られるとは限りません。一部の結果は明らかに誤りであり、他の結果は正しいと思われます。私のコードは以下のとおりです。
def angle(pt1,pt2):
m1 = (pt1.getY() - pt1.getY())/1
m2 = (pt2.getY() - pt1.getY())/(pt2.getX()-pt1.getX())
tnAngle = (m1-m2)/(1+(m1*m2))
return math.atan(tnAngle)
def calculate(pt,ls):
i=2
for x in ls:
pt2 = point(x,i)
i=i+1
ang = angle(pt,pt2)*180/math.pi
ang = ang * (-1)
print ang
pt = point(3,1)
ls = [1,7,0,4,9,6,150]
calculate(pt,ls)
それが生成する結果は次のとおりです。
45.0
0.0
45.0
-75.9637565321
0.0
-63.4349488229
0.0
問題は、2 番目の結果、5 番目、および最後の結果が 1 つの点を共有しているため交差し、配列内の値が異なるため他の点が重複していない理由が理解できないことです。