Я хочу построить 3d кубоид в питоне.python: построение каркаса 3D-кубоида
Вход: центр (3 балла для центра) радиус (3 значения радиуса, по одному для каждого измерения)
В идеале это должно быть каркасный участок (мне нужно, чтобы увидеть, что находится внутри) .Я не являюсь точно знаю, как это сделать. Использование python matplotlib или Mayavi в порядке.
Спасибо!
До сих пор я попытался следующий код .. что только рисует куб
from mpl_toolkits.mplot3d import Axes3D
import matplotlib.pyplot as plt
import numpy as np
from itertools import product, combinations
fig = plt.figure()
ax = fig.gca(projection='3d')
ax.set_aspect("equal")
#draw cube
r = [-1, 1]
for s, e in combinations(np.array(list(product(r,r,r))), 2):
if np.sum(np.abs(s-e)) == r[1]-r[0]:
ax.plot3D(*zip(s,e), color="b")
plt.show()
Что отсутствует в этом коде является то, что его единственным куб (не кубовидный), и это только по центру вокруг 0 (Я действительно хочу предоставить центр)
Подумав немного, я придумал это. Кажется правильным. Дайте мне знать, если вы думаете, его не правильно ... это самый простой из возможных способов без установки myavi, Pygame, POVRAY (у меня было трудное время, устанавливая их на IPython, Конда, мои окна ноутбук)
from mpl_toolkits.mplot3d import Axes3D
import matplotlib.pyplot as plt
import numpy as np
from itertools import product, combinations
fig = plt.figure()
ax = fig.gca(projection='3d')
ax.set_aspect("equal")
#draw cube
r1 = [-1, 1]
r2 = [-2, 2]
r3 = [-3, 3]
center =[5,5,5]
for s, e in combinations(np.array(list(product(r1,r2,r3))), 2):
s=np.array(center)+np.array(s)
e=np.array(center)+np.array(e)
ax.scatter3D(*center, color="r")
if np.linalg.norm(s-e) == 2*r1[1] or np.linalg.norm(s-e) == 2*r2[1] or np.linalg.norm(s-e) == 2*r3[1]:
print zip(s,e)
ax.plot3D(*zip(s,e), color="b")
plt.show()
Я пробовал эту ссылку ... которая предназначена только для куба http://stackoverflow.com/questions/11140163/python-matplotlib-plotting-a-3d-cube-a-sphere-and-a-vector .... Я не совсем уверен, как изменить его как кубоид, где я даю 3 центра и 3 радиуса – mathopt
Можете ли вы уточнить, указав нам в виде кода, что вы пробовали – aestrivex
Я включил код, который я попробовал в вопросе. – mathopt