tikz.py 974 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. #!/usr/bin/env python
  2. # -*- coding: utf-8 -*-
  3. from random import uniform
  4. import random
  5. n = 5
  6. x_min, y_min = 0, 0
  7. x_max, y_max = 5, 5
  8. x_sum = 0
  9. y_sum = 0
  10. coordinates = []
  11. random.seed(42)
  12. for i in range(n):
  13. x = uniform(x_min, x_max)
  14. y = uniform(y_min, y_max)
  15. x_sum += x
  16. y_sum += y
  17. coordinates.append((x, y))
  18. center = (float(x_sum) / n, float(y_sum) / n)
  19. cx, cy = center
  20. point_coords = ""
  21. for p in coordinates:
  22. px, py = p
  23. new_p = "(%.2f,%.2f)," % (px, py)
  24. point_coords = new_p + point_coords
  25. delta_y = cy-py
  26. delta_x = cx-px
  27. length = (delta_y**2+delta_x**2)**0.5
  28. sin_alpha = delta_y/length
  29. cos_alpha = delta_x/length
  30. print("\draw[->] (%.2f,%.2f) -- (%.2f,%.2f);" %
  31. (px, py, px + cos_alpha*length*0.80, py + sin_alpha*length*0.80))
  32. print("\\node[circle,inner sep=1pt,fill] at (%.2f,%.2f) {};" % (cx, cy))
  33. print("\\foreach \point in {" + point_coords + "}{")
  34. print("\\node[dot] at \point {};")
  35. print("}")