2013-10-07 1 views
0

Я пытаюсь найти некоторые подсказки в документации майави без каких-либо успехов.удалить часть iso_surface в mayavi

При визуализации сложных данных я хотел бы удалить часть вычисленного iso_surface. Например, у меня есть код, как

field = mlab.pipeline.gaussian_splatter(data) 
iso = mlab.pipeline.iso_surface(field, contours=[0.07]) 

я могу удалить часть этого iso_surface явным образом объяснить, что мои данные ограничены по х, у или г, делая что-то вроде

field.filter.model_bounds = array([-1., 1., -1., 1., -1., 1.]) 

Но я могу не найти способ объяснить это для произвольной направленной плоскости. Например, я хотел бы ограничить свои данные для направления (1,1,1).

Есть ли способ сделать это?

ответ

0

, если у вас возникли проблемы с отображением поверхности вы хотите, попробуйте поэкспериментировать с аргументом contours, если вы можете сделать их достаточно плотно вокруг поверхности, которую необходимо отобразить, вы должны получить то, что вы хотите ..

, если вы могли бы опубликовать некоторые больше {} NON, рабочий пример, я мог бы быть в состоянии помочь

1

вы можете использовать data_set_clipper клип данных. Клипер является интерактивным или не интерактивным. Я продемонстрирую это для не интерактивной версии:

fld = mlab.pipeline.scalar_field(data) 
clip = mlab.pipeline.data_set_clipper(fld) 
clip.widget.widget_mode='ImplicitPlane' 
clip.widget.widget.enabled=0 
clip.widget.widget.normal=(1,1,1) 
clip.widget.widget.origin=(20,20,20) #(0,0,0) is not the centre but the corner 
iso = mlab.pipeline.iso_surface(clip, contours=[0.07]) 

Если вы хотите, чтобы обрезать чаще вы должны поставить свои обрезанные данные в другой data_set_clippe:

clip2=mlab.pipeline.data_set_clipper(clip) 

Однако я не полностью удовлетворен мой подход, поскольку он использует много ресурсов. Если у кого-то есть лучшее решение, я был бы рад увидеть его.