Чтобы получить координаты вдоль пути, который был определен с помощью кривых (CURVE3
или CURVE4
), вы можете использовать метод Path
'.to_polygons()
.Это даст массив координат N x 2
.
poly, = path.to_polygons()
plt.plot(*zip(*poly), marker="o", ls="None")

Невозможно манипулировать количеством точек, созданных .to_polygon
.Если это требование, вы можете вместо этого создать собственную кривую Безье из заданных точек, как показано ниже.Здесь мы выбираем 32 точки вдоль пути.
import matplotlib.pyplot as plt
import numpy as np
from scipy.special import binom
bernstein = lambda n, k, t: binom(n,k)* t**k * (1.-t)**(n-k)
def bezier(points, num=200):
N = len(points)
t = np.linspace(0, 1, num=num)
curve = np.zeros((num, 2))
for i in range(N):
curve += np.outer(bernstein(N - 1, i, t), points[i])
return curve
start_point = (25, 50)
end_point = (50, 25)
mid_point = (45, 45)
nodes1 = np.array([start_point, mid_point, end_point])
curve1 = bezier(nodes1, num=32)
plt.plot(curve1[:,0], curve1[:,1], color="red", ls="", marker="o", ms=3)
plt.axis('scaled')
plt.show()
