Я могу сделать это с помощью matplotlib Я хочу построить тор и изменить цвет поверхности, основываясь на параметре малого угла.В более общем смысле, как вы окрашиваете отдельные участки при построении поверхности с помощью Mayavi?
Я могу сделать это легко в matplotlib, используя параметр 'facecolors' при построении графика, но, поскольку мне требуется более качественный 3D-рендеринг, я должениспользуйте Mayavi.
Более того, вот как вы можете раскрасить отдельные точки в Mayavi: Построение трехмерных точек с разными цветами в Mayavi (Python) Но я не нашел ничего похожего на работу дляповерхности.
Из документации цвет по умолчанию задан высотой z, но я не уверен, как можно изменить это значение, указав его для некоторого массива, который я могу передать функции построения графиков.
Есть ли способ изменить эту зависимость?
'' '
from mayavi import mlab
import numpy as np
mlab.options.offscreen = True
R = 2
r = 1
theta = np.linspace(0, 2 * np.pi, 20)
phi = np.linspace(0, 2 * np.pi, 20)
torus = np.zeros((3,20,20))
for i in range(0,20):
for j in range(0,20):
torus[0][i][j] = (R + r * np.cos(phi[j])) * np.cos(theta[i])
torus[1][i][j] = (R + r * np.cos(phi[j])) * np.sin(theta[i])
torus[2][i][j] = r * np.sin(phi[j])
mlab.mesh(torus[0], torus[1], torus[2])
mlab.show()
' ''
Я хочу, чтобы результат выглядел следующим образом:
