На этом шаге мы продолжим знакомство с фильтрами.
Фильтр вычисляет норму (длину) вектора. Применяется при работе с векторными данными. Например, если визуализировать векторные данные без построения длин, то результат будет таким:
import numpy as np from mayavi import mlab x, y, z = np.mgrid[0:3, 0:3, 0:3] u = x * x v = y w = z src = mlab.pipeline.vector_scatter(u, v, w) mlab.pipeline.glyph(src, mode="2darrow") mlab.show()
Рис.1. Исходная модель
В этом случае мы видим только направления векторов. Добавим вычисление длин векторов:
import numpy as np from mayavi import mlab x, y, z = np.mgrid[0:3, 0:3, 0:3] u = x * x v = y w = z src = mlab.pipeline.vector_scatter(u, v, w) norms = mlab.pipeline.extract_vector_norm(src) mlab.pipeline.glyph(norms, mode="2darrow") mlab.show()
Рис.2. Демонстрация работы фильтра ExtractVectorNorm
Извлекает компоненты векторов.
Извлечём из переданных векторов у-компоненты:
import numpy as np from mayavi import mlab x, y, z = np.mgrid[0:3, 0:3, 0:3] u = x * x v = y w = z src = mlab.pipeline.vector_scatter(u, v, w) comps = mlab.pipeline.extract_vector_components(src) comps.component = 'y-component' mlab.pipeline.glyph(comps, mode="2darrow") mlab.show()
Рис.3. Демонстрация работы фильтра ExtractVectorComponents
Фильтр размещает точки в объеме с эллиптическим гауссовым распределением. Это полезно для оценки поля плотности по набору рассеянных точек.
Возьмем набор, который выглядит так, как показано на рисунке 4.
Рис.4. Исходная модель
Проведём предварительную обработку фильтром GaussianSplatter.
import numpy as np from mayavi import mlab x, y = np.mgrid[-2:2:0.1, -2:2:0.1] z = np.cos(x * y) * np.sin(x * y) src = mlab.pipeline.array2d_source(z) gsp = mlab.pipeline.gaussian_splatter(src) mlab.pipeline.glyph(gsp, mode='cone') mlab.show()
Получим следующую модель:
Рис.5. Демонстрация работы фильтра GaussianSplatter
На следующем шаге мы продолжим изучение этого вопроса.