如何获取一个在曲线上创建了更多点的形状,并对其进行细分,以使这些点沿着曲线更均匀地分布?在我的研究中,我认为numpy
的interp可能是正确的函数,但我不知道该使用什么作为参数(x
,xp
,fp
,left
,right
,& period
).任何帮助都将非常感谢!
下面是显示所需输出的动画。
以下是输入圆角矩形的代码:
from matplotlib import pyplot as plt
import numpy as np
x_values = [1321.4, 598.6, 580.6, 563.8, 548.6, 535.4, 524.5, 516.2, 511,
509.2, 509.2, 511, 516.2, 524.5, 535.4, 548.6, 563.8, 580.6, 598.6, 1321.4, 1339.4,
1356.2, 1371.4, 1384.6, 1395.5, 1403.8, 1409, 1410.8, 1410.8, 1409, 1403.8, 1395.5,
1384.6, 1371.4, 1356.2, 1339.4, 1321.4]
y_values = [805.4, 805.4, 803.5, 798.3, 790.1,
779.2, 766, 750.8, 734, 716, 364, 346, 329.2, 314, 300.8, 289.9, 281.7, 276.5, 274.6,
274.6, 276.5, 281.7, 289.9, 300.8, 314, 329.2, 346, 364, 716, 734, 750.8, 766, 779.2,
790.1, 798.3, 803.5, 805.4]
fig, ax = plt.subplots(1)
ax.plot(x_values,y_values)
ax.scatter(x_values,y_values)
ax.set_aspect('equal')
plt.show()
谢谢大家!
3条答案
按热度按时间jm81lzqq1#
ippsafx72#
一种方法是使用shapely库,你可以使用你的点来创建一个
LineString
对象,然后像你期望的那样使用numpy.linspace
来插值。2exbekwf3#
这是一个非常基本的解决方案,在一条线上的相邻点之间进行插值。
基本上,该代码所做的是,它将"临时"点放置在相邻点之间的直线上,这些点以大约
stepsize
的间距均匀分布。这将导致曲线上的间距近似均匀(stepsize
越小,你拥有的点越密集)。现在如果你挑选它上面的每一个skipper
-th点,这些点之间的间距将大约为skipper*stepsize
。它有一个小缺陷,第一个和最后一个点不能保证彼此相距这么远,所以你必须使用
skipper
来修复这个问题。代码: