Animar una superficie
Este ejemplo muestra cómo animar una superficie. En concreto, este ejemplo anima un armónico esférico. Los armónicos esféricos son versiones esféricas de la serie de Fourier y se pueden emplear para modelar las oscilaciones libres de la Tierra.
Definir la cuadrícula esférica
Defina un conjunto de puntos en una cuadrícula esférica para calcular el armónico.
theta = 0:pi/40:pi; phi = 0:pi/20:2*pi; [phi,theta] = meshgrid(phi,theta);
Calcular el armónico esférico
Calcule el armónico esférico con un grado seis, del orden de uno, y una amplitud de 0,5 en la superficie de una esfera con un radio igual a cinco. Después, convierta los valores a coordenadas cartesianas.
degree = 6; order = 1; amplitude = 0.5; radius = 5; Ymn = legendre(degree,cos(theta(:,1))); Ymn = Ymn(order+1,:)'; yy = Ymn; for kk = 2: size(theta,1) yy = [yy Ymn]; end yy = yy.*cos(order*phi); order = max(max(abs(yy))); rho = radius + amplitude*yy/order; r = rho.*sin(theta); x = r.*cos(phi); y = r.*sin(phi); z = rho.*cos(theta);
Representar el armónico esférico en la superficie de una esfera
Utilizando la función surf
, represente el armónico esférico en la superficie de la esfera.
figure s = surf(x,y,z); light lighting gouraud axis equal off view(40,30) camzoom(1.5)
Animar la superficie
Para animar la superficie, utilice un bucle for para cambiar los datos en su gráfica. Para sustituir los datos de la superficie, establezca las propiedades XData
, YData
y ZData
de la superficie en valores nuevos. Para controlar la velocidad de la animación, utilice pause
después de cargar los datos de la superficie.
scale = [linspace(0,1,20) linspace(1,-1,40)]; for ii = 1:length(scale) rho = radius + scale(ii)*amplitude*yy/order; r = rho.*sin(theta); x = r.*cos(phi); y = r.*sin(phi); z = rho.*cos(theta); s.XData = x; s.YData = y; s.ZData = z; pause(0.05) end