У меня есть массив vertices
формы (N,3), содержащий N вершин сферического многоугольника в 3D, т.е. все эти точки лежат на поверхности сферы. Центр и радиус сферы известны (например, единичная сфера). Я хотел бы построить сферический многоугольник, ограниченный этими вершинами. (Математически говоря, я хочу построить сферически выпуклую оболочку, образованную этими вершинами).
Как я могу сделать это, используя matplotlib
? Я пробовал Poly3DCollection
, но это только евклидов многоугольник. Мне удалось построить всю единичную сферу, используя plot_surface
, вот так:
u = np.linspace(0, 2 * np.pi, 100)
v = np.linspace(0, np.pi, 100)
x = np.outer(np.cos(u), np.sin(v))
y = np.outer(np.sin(u), np.sin(v))
z = np.outer(np.ones(np.size(u)), np.cos(v))
ax.plot_surface(x, y, z, rstride=5, cstride=5, color='y', alpha=0.1)
Я думаю, можно вручную вычислить, какие точки удалить из x, y, z
, а затем использовать plot_surface
для построения полигона. Будет ли это правильным способом использования matplotlib
или у него есть другой модуль, который я мог бы использовать напрямую?
В случае, если нет удобного способа сделать это в matplotlib
, можете ли вы порекомендовать какую-либо другую библиотеку, которая это делает?
matplotlib
довольно ограничен для 3D-графики, в результате я сделал что-то похожее на то, что вы сделали выше. Я обнаружил, чтоmayavi
подходит лучше, но в конечном итоге он немного сложнее, загляните на официальный сайт (docs.enthought.com/mayavi/mayavi/auto/examples.html) и эту страницу (indranilsinharoy.com/2014/03/02/) для примера со сферой. - person Ed Smith   schedule 22.09.2015