Я хочу вычислить угол из 3 точек, используя 6 значений (x и y для каждой из 3 точек). Эти значения перечислены в фрейме данных panda. Однако я получаю много значений в качестве вывода, и они не углы. Также дайте мне знать, если у вас есть идея о том, как решить проблему (код, который я написал, довольно уродлив, я знаю ...). Я пробовал разные способы, но это единственный, который я могу использовать с панда данных, и я совсем новичок в python ... Любое понимание будет полезно Функция для вычисления углов, используя 3 точки
def FindAngle3Points (a,b,c):
#a = np.array([6,0])
#b = np.array([0,0]) this is the vertex of the angle
#c = np.array([0,6])
ba = a - b
bc = c - b
cosine_angle = np.dot(ba, bc) / (np.linalg.norm(ba) * np.linalg.norm(bc))
angle = np.arccos(cosine_angle)
print(np.degrees(angle))
Функция для вычисления углов из 6 столбцов
def MakePointFromCoord(X1column, Y1column, X2column, Y2column, X3column, Y3column):
alpha_column = []
for x1 in X1column:
for y1 in Y1column:
for x2 in X2column:
for y2 in Y2column:
for x3 in X3column:
for y3 in Y3column:
a = np.array([x1,y1])
b = np.array([x2,y2])
c = np.array([x3,y3])
alpha = FindAngle3Points(a,b,c)
alpha_column.append(alpha)
return(alpha_column)
И вот код, который я использовал:
# Create Pandas DataFrame
import pandas as pd
# Initialise data to lists.
data = [{'x1': 1, 'y1': 2, 'x2':3, 'y2': 1, 'x3': 2, 'y3':3}, {'x1': 5, 'y1': 7, 'x2':3, 'y2': 8, 'x3': 2, 'y3':3}, {'x1': 1, 'y1': 7, 'x2':5, 'y2': 8, 'x3': 4, 'y3':3}]
# Creates DataFrame.
df = pd.DataFrame(data)
# Print the data
df
#Compute angles from 6 coordinates
MakePointFromCoord(df.x1, df.y1, df.x2, df.y2, df.x3, df.y3)