59 lines
1.4 KiB
Python
59 lines
1.4 KiB
Python
# -*- coding: utf-8 -*-
|
|
"""
|
|
Created on Fri Mar 4 19:02:17 2022
|
|
|
|
@author: Kenan
|
|
|
|
Skript um Geradengleichung und winkel der geraden aus einer menge von punkten zu bestimmen
|
|
|
|
"""
|
|
|
|
import numpy as np
|
|
|
|
from matplotlib import pyplot as plt
|
|
|
|
# KOSY: Y: Nach oben, X: Nach rechts
|
|
|
|
# create array: column: x y radius colornumber
|
|
points = np.array([[2,3,5,1],
|
|
[7,6,5,1]])
|
|
|
|
points = np.array([[1,1,5,1],
|
|
[1,2,5,1],
|
|
[2,2,5,1],
|
|
[3,1,5,1],
|
|
[4,1,5,1],
|
|
[5,1,5,1],
|
|
[6,1,5,1],
|
|
[5,2,5,1],
|
|
[4,3,5,1],
|
|
[5,5,5,1],
|
|
[7,5,5,1],
|
|
[2,6,5,1]])
|
|
|
|
|
|
x = points[:,0] # x coordinates
|
|
y = points[:,1] # y coordinates
|
|
|
|
deg = 1 # Degree of the fitting polynomial
|
|
|
|
[m, c] = np.polyfit(x,y,deg) # m*x+c = g(x)
|
|
|
|
#Winkelberechnung mit atan2. Mathematisch. Zur X-Achse. Positiv gegen UZS.
|
|
x_1=1
|
|
y_1=m*x_1
|
|
alpha_atan2 = np.arctan2(y_1,x_1)*180/np.pi
|
|
print(f"alpha atan2: {round(alpha_atan2,2)}°")
|
|
|
|
# winkelberechnung selbst. Zur Y-Achse aber
|
|
alpha = np.arctan(1/m) # Winkel zur Y-Achse in [rad]
|
|
alpha_deg = alpha * 180/np.pi # Winkel in [°]
|
|
print(f"alpha: {round(alpha_deg,2)}°")
|
|
|
|
f1 = plt.plot(x,y, 'o')
|
|
plt.grid(True)
|
|
|
|
x_values_to_plot = np.linspace(0,7,100)
|
|
y_fitted_line = m*x_values_to_plot+c
|
|
|
|
plt.plot(x_values_to_plot, y_fitted_line) |