Как удалить часть 3D-плоскости?Python

Программы на Python
Ответить
Anonymous
 Как удалить часть 3D-плоскости?

Сообщение Anonymous »


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

импортировать numpy как np импортировать matplotlib.pyplot как plt из mpl_toolkits.mplot3d импортировать Axes3D # Параметрические уравнения для поверхности катеноида def catenoid(u, v, a=1): x = a * np.cosh(u/a) * np.cos(v) y = a * np.cosh(u/a) * np.sin(v) г = ты вернуть x, y, z # Генерируем значения u и v и = np.linspace(-2, 2, 100) v = np.linspace(0, 2 * np.pi, 100) и, v = np.meshgrid(u, v) # Создаем фигуру рис = plt.figure(figsize=(12, 12)) ax = fig.add_subplot(111, Projection="3d", Computed_zorder=False) ax.set_box_aspect(аспект=(6, 4, 3)) ax.set_axis_off() # Постройте первую поверхность катеноида без линий сетки x1, y1, z1 = катеноид(u, v) surf1 = ax.plot_surface(x1, y1, z1, cmap='viridis', Edgecolor='grey', Alpha=0.5, vmin=-2, vmax=2) # Постройте вторую поверхность катеноида со смещением по оси Y без линий сетки. x2, y2, z2 = катеноид(u, v) x2_offset = x2 + 8 # Отрегулируйте значение смещения по мере необходимости surf2 = ax.plot_surface(x2_offset, y2, z2, cmap='viridis', Edgecolor='grey', Alpha=0.5, vmin=-2, vmax=2) # Постройте первую плоскость с верхними и нижними цветами первой поверхности катеноида xx, yy = np.meshgrid(np.linspace(-5, 13, 100), np.linspace(-5, 5, 100)) зз = гг * 0 - 2 ax.plot_surface(xx, yy, zz, zorder=-1, альфа=0,5, cmap='viridis', Edgecolor='none', vmin=-2, vmax=2) зз = уу * 0 + 2 ax.plot_surface(xx, yy, zz, zorder=1, альфа=0,5, cmap='viridis', Edgecolor='none', vmin=-2, vmax=2) #Показать сюжет plt.show() На данный момент это выглядит так:
Изображение


Я хочу избавиться от серых частей, чтобы плоскость не закрывала катеноидные отверстия:
Изображение

Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»