设计一条从a点到B点的道路,以最小曲线半径为准

2024-04-23 05:29:42 发布

您现在位置:Python中文网/ 问答频道 /正文

建议道路通过多个(n)x、y、z点。我试图找到一条最小的光滑曲线,在保持最小曲率半径的同时,从A点到Z点。你知道吗

我可以找到点之间的平滑线,但我不能限制曲率到一定的曲率半径。你知道吗

例如,在下图中,平滑线穿过了短曲率半径或高曲率,这在物理上是不可能的。如何使转弯的曲率半径变长?你知道吗

我对编程比较陌生,所以我尝试了下面的代码。这些点表示点A和点Z之间的点

enter image description here

points=[[3.08066667,3.25593333,-1.49958947],[3.08066667,3.25669780,-1.49898697],[3.08066667,3.25746226,-1.44859092],[3.08066667,3.25822673,-1.39266809],[3.08066667,3.25899119,-1.35914138],[3.08066667,3.25975565,-1.26570602],[3.08066667,3.26052012,-1.09785688],[3.08066667,3.26128458,-1.15140859]]  


Smooth = np.array(points)

x, y = Smooth.T
i = np.arange(len(Smooth))


interp_i = np.linspace(0, i.max(), 100 * i.max())
xi = interp1d(i, x, kind='cubic')(interp_i)
yi = interp1d(i, y, kind='cubic')(interp_i)
ax.plot(xi, yi, color='black',linewidth=2)

得到不同最小曲率半径下第一点[0]到第[n]点的最小距离。为了获得最小曲率半径,在长度(例如1000米)上指定了一个曲率度(例如40度或60度)。可以调整点0和n之间的点以返回最小平滑线。你知道吗

谢谢你的帮助。你知道吗


Tags: np半径曲线建议maxpointssmoothkind