Как построить внешнюю часть 3D-формы в Python Plotly, не определяя ее грани?

Я пытаюсь построить несколько трехмерных фигур в Python Plotly. Ради практики я пытался построить куб.

Я попробовал Isosurface так как меня интересует только внешняя часть формы, но, как ни странно, на выходе получился не куб.

      import plotly.graph_objects as go
import numpy as np 

x=[0, 0, 1, 1, 0, 0, 1, 1]
y=[0, 1, 1, 0, 0, 1, 1, 0]
z=[0, 0, 0, 0, 1, 1, 1, 1]

myisosurf = go.Isosurface(x=x,y=y,z=z,value= np.ones(len(x)))
fig = go.Figure(data=myisosurf)
fig.show()

Я заставил его работать с Mesh3Dкоманда (с небольшой помощью отсюда), но тот факт, что она также требует настроек для параметров, заставляет меня предпочесть более простой метод. Особенно при работе с более сложными формами, чем куб, было бы очень сложно настроить i, j, k параметры.

      i= [7, 0, 0, 0, 4, 4, 6, 1, 4, 0, 3, 6]
j= [3, 4, 1, 2, 5, 6, 5, 2, 0, 1, 6, 3]
k= [0, 7, 2, 3, 6, 7, 1, 6, 5, 5, 7, 2]

my3dmesh = go.Mesh3d(x=x,y=y,z=z, i=i, j=j, k=k, intensity = np.linspace(1, 1, 8, endpoint=True),name='y')
fig = go.Figure(data=my3dmesh)
fig.show()

Как я могу заставить Python Plotly отображать внешнюю часть формы без ручного определения ее граней через i,j,k параметры?

1 ответ

Благодаря комментарий @Adreas ДИК, это кажется , что параметр alphahull из Mesh3D Команда может направить Plotly для отображения выпуклой оболочки координат во входных данных.

Без параметра alphahull (или с alphahull = -1) Триангуляция Делоне используется для вычисления граней вокруг координат с использованием значений параметров. С участием alphahull = 0, метод выпуклой оболочки используется для вычисления граней вокруг координат, в результате получается только «внешняя» форма, без необходимости установки i, j, k параметры.

так:

      import plotly.graph_objects as go
import numpy as np 

my3dmesh = go.Mesh3d(x=x,y=y,z=z, alphahull = 0, intensity = np.linspace(1, 1, 8, endpoint=True),name='y')
fig = go.Figure(data=my3dmesh)
fig.show()

Другие вопросы по тегам