我想知道两点之间的等距点。 例如。
p1 = (1,1)
p2 = (5,5)
我期待的答案是:
def getEquidistantPoints(p1,p2,HowManyParts):
#some code
return (array with points)
在本例中,p1和p2:
A = getEquidistantPoints(p1,p2,4)
A = [(1,1),(2,2),(3,3),(4,4),(5,5)]
永远是一条直线。 在这种情况下,HowManyParts是划分的整个距离
类似numpy.linspace,但有两个维度。 感谢。
答案 0 :(得分:10)
由于连接两个点的线的线性,您可以单独单独使用numpy.linspace
:
>>> 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)]
例如:
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))
答案 1 :(得分:4)
使用Foo.getBars(fooId, 10, 0)
Python
的纯linear
解决方案:
首先创建一个linear interpolation
函数:
interpolation
然后只需在def lerp(v0, v1, i):
return v0 + i * (v1 - v0)
和interpolate
坐标之间使用x
:
y
并使用您的值进行测试:
def getEquidistantPoints(p1, p2, n):
return [(lerp(p1[0],p2[0],1./n*i), lerp(p1[1],p2[1],1./n*i)) for i in range(n+1)]