0
0 комментариев

Нужно нарисовать объект z^2-x^2-y^2=0. Это два конуса вершинами в точке 0.
Если данный объект я еще могу нарисовать использовав две функции, выразив при этом z (z=sqrt(x^2+y^2); z=-sqrt(x^2+y^2)), то в дальнейшем мне нужно будет рисовать более сложные объекты, где это невозможно. Для двухмерного обьекта есть такое решение:

y, x = np.ogrid[-5:5:100j, -5:5:100j]
plt.contour(x.ravel(), y.ravel(), pow(y, 2) - pow(x, 2), [0])

Можно ли это решение применить для трехмерного или существует какое-то другое?

Мой код:

from mpl_toolkits.mplot3d import axes3d
import matplotlib.pyplot as plt
import numpy as np
 
fig = plt.figure()
ax = fig.gca(projection='3d')
 
X = np.arange(-2, 2, 0.01)
Y = np.arange(-2, 2, 0.01)
X, Y = np.meshgrid(X, Y)
R = X**2+Y**2
Z1 = np.sqrt(R)
Z2 = -np.sqrt(R)
 
ax.plot_surface(X, Y, Z1)
ax.plot_surface(X, Y, Z2)
 
plt.show()


Добавить комментарий