Круглая поверхность Python 2D в 3D

Я пытаюсь создать верхнюю/нижнюю часть цилиндрической поверхности. Здесь мне удалось получить боковую поверхность: с np.outer. Я хотел бы снова использовать np.outer для согласованности. Я думал, что понял ответы в ссылке, однако, если я правильно понял, то должно работать следующее:

R = 5
h = 5
u = np.linspace(0,  2*np.pi, 100)
x = R * np.outer(np.ones(np.size(u)), np.cos(u))          
y = R * np.outer(np.ones(np.size(u)), np.sin(u))          
z = h * np.outer(np.ones(np.size(u)), np.ones(np.size(u)))

однако на моих графиках поверхность не создается. Я все еще неправильно использую np.outer? Почему не создается поверхность?


person Sterling Butters    schedule 11.05.2017    source источник


Ответы (1)


Нет видимого диска, потому что все точки, которые вы создаете, имеют одинаковое расстояние до центра, а поверхность, которая простирается между «внутренним кругом» и «внешним кругом», бесконечно тонка. Чтобы увидеть диск, радиус должен варьироваться от 0 до желаемого значения (5 в примере).

import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D

R = np.linspace(0, 5, 100)
h = 5
u = np.linspace(0,  2*np.pi, 100)

x = np.outer(R, np.cos(u))
y = np.outer(R, np.sin(u))

fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
ax.plot_surface(x,y,h) # z in case of disk which is parallel to XY plane is constant and you can directly use h
fig.show()

создан диск

person machnic    schedule 12.05.2017