Browse Source

Dateien hochladen nach ''

Hier können die Längen der Armabschnitte und die Bewegungsbereiche der Gelenke (Winkel zur Horizontalen) eingegeben werden, um eine Bewegungsstudie zu plotten.
mkebab 1 year ago
parent
commit
f33c50bc29
1 changed files with 45 additions and 0 deletions
  1. 45 0
      main.py

+ 45 - 0
main.py

@@ -0,0 +1,45 @@
+import matplotlib.pyplot as plt
+import numpy as np
+
+n = 100000
+
+l = [10, 26, 33, 30]
+
+alpha_0 = np.ones(n) * 90
+alpha_1 = np.random.uniform(0, 120, n)
+alpha_2 = np.random.uniform(-60, 60, n)
+alpha_3 = np.random.uniform(-100, 20, n)
+
+alpha = np.vstack((alpha_0, alpha_1, alpha_2, alpha_3)) * (np.pi / 180)
+start_x = 0
+start_y = 0
+
+x0 = np.zeros(n)
+y0 = np.zeros(n)
+x1 = np.zeros(n)
+y1 = np.zeros(n)
+x2 = np.zeros(n)
+y2 = np.zeros(n)
+x3 = np.zeros(n)
+y3 = np.zeros(n)
+
+for dim in range(n):
+    x0[dim] = start_x + np.cos(alpha[0, dim]) * l[0]
+    y0[dim] = start_y + np.sin(alpha[0, dim]) * l[0]
+
+    x1[dim] = x0[dim] + np.cos(alpha[1, dim]) * l[1]
+    y1[dim] = y0[dim] + np.sin(alpha[1, dim]) * l[1]
+
+    x2[dim] = x1[dim] + np.cos(alpha[2, dim]) * l[2]
+    y2[dim] = y1[dim] + np.sin(alpha[2, dim]) * l[2]
+
+    x3[dim] = x2[dim] + np.cos(alpha[3, dim]) * l[3]
+    y3[dim] = y2[dim] + np.sin(alpha[3, dim]) * l[3]
+
+plt.scatter(x3, y3, marker='x', color='red')
+plt.xlabel('X in cm')
+plt.ylabel('Y in cm')
+plt.title('Movement')
+plt.grid()
+
+plt.show()