1
0

Bewegungsstudie.py 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. import matplotlib.pyplot as plt
  2. import numpy as np
  3. n = 100000
  4. l = [0, 50, 40, 30]
  5. alpha_0 = np.ones(n) * (90+90)
  6. alpha_1 = np.random.uniform(-115+90, 115+90, n)
  7. alpha_2 = np.random.uniform(-115+90, 115+90, n)
  8. alpha_3 = np.random.uniform(-115+90, 115+90, n)
  9. def calculate_angels_to_horizon(relative_angels_stepper):
  10. absolute_angels = [0, 0, 0, 0]
  11. absolute_angels[0] = relative_angels_stepper[0]
  12. absolute_angels[1] = absolute_angels[0] + relative_angels_stepper[1]
  13. absolute_angels[2] = absolute_angels[1] + relative_angels_stepper[2]
  14. absolute_angels[3] = absolute_angels[2] + relative_angels_stepper[3]
  15. for j in range(4):
  16. if absolute_angels[j] > 360:
  17. absolute_angels[j] = absolute_angels[j] - 360
  18. return absolute_angels
  19. alpha_rel = np.vstack((alpha_0, alpha_1, alpha_2, alpha_3)) * (np.pi / 180)
  20. print(calculate_angels_to_horizon([90, -115, -115, -115]))
  21. print(np.sin(np.pi*3/2))
  22. start_x = 0
  23. start_y = 0
  24. x0 = np.zeros(n)
  25. y0 = np.zeros(n)
  26. x1 = np.zeros(n)
  27. y1 = np.zeros(n)
  28. x2 = np.zeros(n)
  29. y2 = np.zeros(n)
  30. x3 = np.zeros(n)
  31. y3 = np.zeros(n)
  32. for dim in range(n):
  33. alpha = calculate_angels_to_horizon(
  34. calculate_angels_to_horizon([alpha_rel[0, dim], alpha_rel[1, dim], alpha_rel[2, dim], alpha_rel[3, dim]]))
  35. x0[dim] = start_x + np.cos(alpha[0]) * l[0]
  36. y0[dim] = start_y + np.sin(alpha[0]) * l[0]
  37. x1[dim] = x0[dim] + np.cos(alpha[1]) * l[1]
  38. y1[dim] = y0[dim] + np.sin(alpha[1]) * l[1]
  39. x2[dim] = x1[dim] + np.cos(alpha[2]) * l[2]
  40. y2[dim] = y1[dim] + np.sin(alpha[2]) * l[2]
  41. x3[dim] = x2[dim] + np.cos(alpha[3]) * l[3]
  42. y3[dim] = y2[dim] + np.sin(alpha[3]) * l[3]
  43. plt.scatter(x3, y3, marker='x', color='red')
  44. plt.xlabel('Y in cm')
  45. plt.ylabel('X in cm')
  46. plt.title('Movement')
  47. plt.grid()
  48. plt.show()