Как построить сферические многоугольники в Python с помощью matplotlib?

У меня есть массив 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, можете ли вы порекомендовать какую-либо другую библиотеку, которая это делает?


person Meneldur    schedule 22.09.2015    source источник
comment
matplotlib довольно ограничен для 3D-графики, в результате я сделал что-то похожее на то, что вы сделали выше. Я обнаружил, что mayavi подходит лучше, но в конечном итоге он немного сложнее, загляните на официальный сайт (docs.enthought.com/mayavi/mayavi/auto/examples.html) и эту страницу (indranilsinharoy.com/2014/03/02/) для примера со сферой.   -  person Ed Smith    schedule 22.09.2015
comment
это то, что вы ищете?   -  person ali_m    schedule 07.11.2015