2016-06-15 3 views
0

Я пытаюсь отобразить данные на сфере, но я не могу избавиться от шва, где он обертывается вокруг с азимутальным углом phi = 2 * pi. Я написал простой пример, чтобы показать проблему:Шов в периодической визуализации сетки в Mayavi

from mayavi import mlab 
import numpy as np 
from import_field_map import import_field_map 

data = np.empty([24, 25]) 
for ldx, line in enumerate(data): 
    for cdx, col in enumerate(line): 
     data[ldx, cdx] = ldx 

phi_range = np.linspace(0.0, 2 * np.pi, 25) 
theta_range = np.linspace(-np.pi/2, np.pi/2, 24) 
phis, thetas = np.meshgrid(phi_range, theta_range) 

x = np.cos(thetas) * np.cos(phis) 
y = np.cos(thetas) * np.sin(phis) 
z = np.sin(thetas) 

mlab.figure(1, bgcolor=(1, 1, 1), fgcolor=(0, 0, 0), size=(400, 300)) 
mlab.clf() 
mlab.mesh(x, y, z, scalars=data, colormap='jet') 
mlab.view() 
mlab.show() 

enter image description here

Это выглядит так, как будто MayaVi не в состоянии вычислить GL вершинных нормалей в этих точках, потому что он не знает, что сетка является периодическим.

ответ

0

Я только нашел одно решение, которое не решает корень проблемы (если это не проблема, и я просто использую Mayavi неправильно).

С помощью scipy.ndimage.zoom я могу опробовать мой массив данных и, таким образом, увеличить количество отображаемых лиц. Тогда разница между нормалями лица и вершин становится настолько малой, что шов уже не заметен.

 Смежные вопросы

  • Нет связанных вопросов^_^