Следуя примеру в документе scikit-image, я создаю сферическую поверхностная сетка с алгоритмом марширующих кубов. Я хочу центрировать оболочку единичной сферы в начале координат, определяемом сеткой x, y, z. Однако я не могу этого сделать, так как не знаю, как поместить информацию x, y, z с помощью mpl_toolkits.mplot3d.art3d.Poly3DCollection. Вот код:
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d.art3d import Poly3DCollection
from skimage import measure
import numpy as np
x, y, z = np.ogrid[-4:4:20j, -4:4:20j, -4:4:20j]
r = np.sqrt(x ** 2 + y ** 2 + z ** 2)
verts, faces, normals, values = measure.marching_cubes_lewiner(r,level=1)
fig = plt.figure(figsize=(10, 10))
ax = fig.add_subplot(111, projection='3d')
mesh = Poly3DCollection(verts[faces])
mesh.set_edgecolor('k')
ax.add_collection3d(mesh)
plt.show()
Проблема в том, что функция marching_cubes_lewiner
не учитывает x,y,z
. Как я могу центрировать получившуюся сферу на 0,0,0, как это следует из сетки?
measure.marching_cubes_lewiner
и принимает два аргумента. - person ImportanceOfBeingErnest   schedule 18.09.2018marching_cubes
. Но код в его нынешнем виде должен работать; какую проблему вы испытываете? - person ImportanceOfBeingErnest   schedule 18.09.2018