calcMinDist.py 988 B

1234567891011121314151617181920212223242526272829303132333435363738
  1. #!/usr/bin/env python
  2. import numpy
  3. class Point:
  4. """Represents a point in 2D."""
  5. def __init__(self, x, y):
  6. self.x = x
  7. self.y = y
  8. def euclidean_dist(p1, p2):
  9. """Euclidean distance of two 2D points."""
  10. from math import sqrt
  11. return sqrt((p1.x-p2.x)**2 + (p1.y-p2.y)**2)
  12. def get_min_dist(p1, precision=0.001, start_x=0, end_x=3):
  13. """Get x of point on (x,x^2) that has minimal distance to given Point p."""
  14. min_dist = -1
  15. for x in numpy.arange(start_x, end_x, precision):
  16. p2 = Point(x, x**2)
  17. dist = euclidean_dist(p1, p2)
  18. if min_dist == -1 or dist < min_dist:
  19. min_dist = dist
  20. return min_dist
  21. """for i in numpy.arange(0, 3, 0.01):
  22. min_dist = get_min_dist(Point(0, i))
  23. if abs(i-min_dist) < 0.005:
  24. print(i, min_dist)"""
  25. print(get_min_dist(Point(0, 4.25), precision=0.001, start_x=0, end_x=3))
  26. # print(euclidean_dist(Point(0,5),Point(2, 2**2)))
  27. # print(get_min_dist(5, 0.00001, 2, 3))