Я пытаюсь создать bottle как революцию solid, используя MatplotLib. У меня есть следующие очки: Изображение координат
Которые с точки зрения координат:
coords = [(0.00823433249299356, 0.06230346394288128),
(0.04086905251958573, 0.0648935210878489),
(0.08386400112604843, 0.0648935210878489),
(0.11753474401062763, 0.06541153251684242),
(0.14239929260231693, 0.05712334965294601),
(0.19109236692770842, 0.05401528107898486),
(0.2278711783862488, 0.05142522393401722),
(0.24133947554008045, 0.04158300678314021)]
Полином (более или менее точный):
Lambda(x, -19493.7965633925*x**6 + 13024.3747084876*x**5 - 3228.16456296349*x**4 + 368.816080918066*x**3 - 20.500262217588*x**2 + 0.545840273670868*x + 0.0590464366057008)
Который я получаю по:
# Getting the polynomial:
z = np.polyfit(xdata, ydata, 6)
# Being xdata and ydata the 2 vector from the coordinates
x = sp.symbols('x', real=True)
P = sp.Lambda(x,sum((a*x**i for i,a in enumerate(z[::-1]))))
print(P)
Точка описывает контур bottle (бросьте ваше воображение), являющегося bottle в плоскости XY. Как я могу получить из этой кривой solid оборота, воссоздающего bottle?
Моя цель состоит в том, чтобы иметь возможность вращать генераторную кривую и создавать solid оборота, что я я пробовал это:
# Create the polynomial
pol = sp.lambdify(x,P(x),"numpy")
# Create the matrix of points
X = np.linspace(xdata[0], xdata[-1], 50)
Y = pol(X)
X, Y = np.meshgrid(X, Y)
# As long as a bottle is no more than a big amount of small cylinders, my
# equation should be more or less like:
# Z = x**2 + y** -R**2
# So we create here the equation
Z = X**2 + Y**2 - (Y - 0.0115)**2
# We create the #D figure
fig = plt.figure()
ax = plt.axes(projection="3d")
# And we representate it
surf = ax.plot_surface(X, Y, Z)
# We change te labels
ax.set_xlabel('$x$')
ax.set_ylabel('$y$')
ax.set_zlabel('$z$')
# And show the figure
plt.show()
Проблема в том, что я больше не bottle (и я думаю, потому что, как я использую plot_surface
(я не получаю очень хорошо, как использовать его, читая документацию).
То, что я получил, это: Изображение изображения . Сначала я подумал, что это проблема, связанная с масштабированием, но я изменил его и цифра такая же