在给定方向创建均匀间隔的点

问题描述

假设我在 2D 方向上有一条任意方向的线。我想沿着这条线创建均匀间隔的点。我想到了一种编码方法,但似乎它会变得混乱,Python/Numpy 中是否有任何库可以做到这一点?

解决方法

恐怕没有任何库函数来生成您的点列表 您必须使用自己的代码生成它。

假设您的线由以下 2 个点(xy 坐标)定义:

p0 = np.array([1.0,1.0])
p1 = np.array([3.0,2.0])

还假设要创建的“额外”点数为:

n = 10

然后,创建一个点列表(一个 Numpy 形状的数组 n + 2,2), 计算这些点之间的差异:

dlt = p1 - p0

然后运行:

result = np.vstack([ p0 + i * dlt for i in range(n + 2) ])

结果是:

array([[ 1.,1.],[ 3.,2.],[ 5.,3.],[ 7.,4.],[ 9.,5.],[11.,6.],[13.,7.],[15.,8.],[17.,9.],[19.,10.],[21.,11.],[23.,12.]])

所以前 2 个点是 p0p1 和其他点 进一步在同一行上,以相同的步长dlt

编辑

要生成 n 个点介于 2 个点(p0p1)之间的列表, 包括这两个端点,您可以运行:

result = np.vstack([np.linspace(p0[0],p1[0],n),np.linspace(p0[1],p1[1],n)]).T

但是如果你有一个多边形,那么你应该为每一边定义一个数字 中间点,然后使用上面的公式。

在一般情况下,如何选择号码可能会出现问题 点数。