tikz.py 853 B

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. from random import uniform
  2. import random
  3. import math
  4. n = 5
  5. xMin, yMin = 0, 0
  6. xMax, yMax = 5, 5
  7. xSum = 0
  8. ySum = 0
  9. coordinates = []
  10. random.seed(42)
  11. for i in range(n):
  12. x = uniform(xMin, xMax)
  13. y = uniform(yMin, yMax)
  14. xSum += x
  15. ySum += y
  16. coordinates.append((x,y))
  17. center = (float(xSum) / n, float(ySum) / n)
  18. cx, cy = center
  19. pointCoords = ""
  20. for p in coordinates:
  21. px, py = p
  22. newP = "(%.2f,%.2f)," % (px, py)
  23. pointCoords = newP + pointCoords
  24. deltaY = cy-py
  25. deltaX = cx-px
  26. length = (deltaY**2+deltaX**2)**0.5
  27. sinAlpha = deltaY/length
  28. cosAlpha = deltaX/length
  29. print("\draw[->] (%.2f,%.2f) -- (%.2f,%.2f);" % (px, py, px+cosAlpha*length*0.80, py+sinAlpha*length*0.80))
  30. print("\\node[circle,inner sep=1pt,fill] at (%.2f,%.2f) {};" % (cx, cy))
  31. print("\\foreach \point in {" + pointCoords + "}{")
  32. print("\\node[dot] at \point {};")
  33. print("}")