Проектирование дороги от точки A до точки B с минимальным радиусом кривизны - PullRequest
0 голосов
/ 07 февраля 2019

Рекомендуется, чтобы дорога проходила через (n) x, y, z точек.Я пытаюсь найти минимальную плавную кривую линию для перемещения из точки А в точку Z, сохраняя при этом минимальный радиус кривизны.

Я могу найти плавную линию между точками, но не могу ограничить кривизну до определенного радиуса кривизны.

Например, на приведенном ниже рисунке гладкая линия прошла короткий радиус кривизны или высокую степень кривизны, что физически невозможно.Как я могу сделать радиус кривизны для этого поворота длиннее?

Я относительно новичок в программировании, поэтому я попробовал приведенный ниже код.Точки представляют точку А и точки между ними до точки 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] при различном минимальном радиусе кривизны.Чтобы получить минимальный радиус кривизны, указывается степень кривизны (например, 40 градусов или 60 градусов) по длине (например, 1000 метров).Точки между точками 0 и n можно отрегулировать так, чтобы получить минимальную плавную линию.

Ваша помощь приветствуется.

...