Идея состоит в том, чтобы построить кривую: C(t) = (1 + cos(t))i + (1 + sin(t))j + (1 -sin(t)-cos(t))k
.Следуя инструкциям на модуле печати на https://docs.sympy.org/latest/modules/plotting.html, его можно получить, используя plot3d_parametric_line
:
Метод 1:
%matplotlib notebook
from sympy import cos, sin
from sympy.plotting import plot3d_parametric_line
t = sp.symbols('t',real=True)
plot3d_parametric_line(1 + cos(t), 1 + sin(t), 1-sin(t)-cos(t), (t, 0, 2*sp.pi))
Несмотря на то, что это допустимый метод, существует другой способ его построения без использования plot3d_parametric_line
, но ax.plot
.Что я пробовал:
Метод 2:
fig = plt.figure(figsize=(8, 6))
ax = fig.gca(projection='3d')
ax.set_xlim([-0.15, 2.25])
ax.set_ylim([-0.15, 2.25])
ax.set_zlim([-0.75, 2.50])
ax.plot(1+sp.cos(t),1+sp.sin(t),1-sp.sin(t)-sp.cos(t))
plt.show()
Но появляется TypeError: object of type 'Add' has no len()
...
Как это исправить, чтобы получить ту же кривуючем с методом 1?
Спасибо