У меня есть код, который создает сферу tri angular me sh, и функция, которая периодически удваивает радиус сферы, однако, когда я создаю фигуру, изображение выглядит автоматически масштабированным, так что нет никакой визуальной разницы между сферы. Как я могу контролировать размер изображения, чтобы обеспечить визуальный рост.
import numpy as np
import trimesh
from mayavi import mlab
n_sub = 3
mesh = build_icosa(1.)
for i in range(n_sub):
mesh = mesh.subdivide()
n_vt = mesh.vertices.shape[0]
for j in range(n_vt):
mesh.vertices[j,:] /= np.sqrt(np.sum(mesh.vertices[j,:]**2))
verts = mesh.vertices
triangles = mesh.faces
x = []
y = []
z = []
for i in range(len(verts)):
x.append(verts[i][0])
y.append(verts[i][1])
z.append(verts[i][2])
r0 = np.sqrt(np.power(x,2) + np.power(y,2) + np.power(z,2))
phi0 = np.arctan2(y, x)
theta0 = np.arccos(np.divide(z,r0))
time = np.linspace(0,10,300)
#Double sphere radius
def rad_doub(x, y, z, t):
r = np.sqrt(np.power(x,2) + np.power(y,2) + np.power(z,2))
phi = np.arctan2(y, x)
theta = np.arccos(np.divide(z,r))
w = 2 * np.pi / 5
for i in range(len(r)):
r[i] = 1.5 + (.5*np.cos(w*t))
x = r * np.sin(theta) * np.cos(phi)
y = r * np.sin(theta) * np.sin(phi)
z = r * np.cos(theta)
return(x, y, z)
for i in range(len(time)):
x,y,z = rad_doub(x, y, z, time[i])
if i < 10:
dex = '00'+str(i)
elif 100 > i >= 10:
dex = '0'+str(i)
else:
dex = str(i)
mlab.options.offscreen = True
sphere = mlab.triangular_mesh(x, y, z, triangles)
mlab.savefig('sp'+dex+'.png')
, где `build_icosa 'создает икосоэдр, вписанный в сферу данного радиуса.