I am trying to know equidistant points between two points. For example:
p1 = (1,1) p2 = (5,5)
The answer that I am expecting is:
def getEquidistantPoints(p1, p2, HowManyParts): #some code return (array with points)
In this example, with p1
, and p2
:
A = getEquidistantPoints(p1,p2,4) A = [(1,1),(2,2),(3,3),(4,4),(5,5)]
Always will be a straight line.
HowManyParts
in this case is the whole distance that is divided
something like numpy.linspace()
but in two dimensions.
Advertisement
Answer
Thanks to linearity of the line connecting two points, you can simply use numpy.linspace
for each dimension independently:
import numpy def getEquidistantPoints(p1, p2, parts): return zip(numpy.linspace(p1[0], p2[0], parts+1), numpy.linspace(p1[1], p2[1], parts+1))
For example:
>>> list(getEquidistantPoints((1,1), (5,5), 4)) >>> [(1.0, 1.0), (2.0, 2.0), (3.0, 3.0), (4.0, 4.0), (5.0, 5.0)]