我有6个点,它们都位于球体的表面上,是八面体的顶点.如何在三维轴上将球体内的这个八面体的表面切割成?
我有以下代码,但它没有做我所希望的:
from mpl_toolkits.mplot3d import Axes3D
from mpl_toolkits.mplot3d.art3d import Poly3DCollection
import matplotlib.pyplot as plt
Points=[[ 0.17770898,0.72315927,0.66742804],[-0.65327074,-0.4196453,0.63018661],[ 0.65382635,0.42081934,-0.62882604],[-0.17907021,-0.72084723,-0.66956189],[-0.73452809,0.5495376,-0.39809158],[ 0.73451554,-0.55094017,0.39617148]]
fig=plt.figure()
ax =fig.add_subplot(1,1,projection='3d',aspect=1)
ax.add_collection3d(Poly3DCollection([Points]))
u = np.linspace(0,np.pi,30)
v = np.linspace(0,2 * np.pi,30)
x = np.outer(np.sin(u),np.sin(v))
y = np.outer(np.sin(u),np.cos(v))
z = np.outer(np.cos(u),np.ones_like(v))
ax.plot_wireframe(x,y,z,alpha=0.3)
plt.show()
谢谢您的帮助.
最佳答案
Poly3DCollection是多边形列表,Polygon是点列表,点是包含三个值的列表.因此,您应该将值列表列表传递给Poly3DCollection.更改以下代码:
ax.add_collection3d(Poly3DCollection([Points]))