如何解决在给定方向创建均匀间隔的点
假设我在 2D 方向上有一条任意方向的线。我想沿着这条线创建均匀间隔的点。我想到了一种编码方法,但似乎它会变得混乱,Python/Numpy 中是否有任何库可以做到这一点?
解决方法
恐怕没有任何库函数来生成您的点列表 您必须使用自己的代码生成它。
假设您的线由以下 2 个点(x 和 y 坐标)定义:
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 个点是 p0 和 p1 和其他点 进一步在同一行上,以相同的步长dlt。
编辑
要生成 n 个点介于 2 个点(p0 和 p1)之间的列表, 包括这两个端点,您可以运行:
result = np.vstack([np.linspace(p0[0],p1[0],n),np.linspace(p0[1],p1[1],n)]).T
但是如果你有一个多边形,那么你应该为每一边定义一个数字 中间点,然后使用上面的公式。
在一般情况下,如何选择号码可能会出现问题 点数。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。