Main Content

La traducción de esta página aún no se ha actualizado a la versión más reciente. Haga clic aquí para ver la última versión en inglés.

Mover un grupo de objetos a lo largo de la línea

Este ejemplo muestra cómo mover un grupo de objetos juntos a lo largo de una línea mediante transformadas.

Represente una onda sinusoidal y establezca el modo de los límites de los ejes en manual para evitar calcular de nuevo los límites durante el bucle de animación.

x = linspace(-6,6,1000);
y = sin(x);
plot(x,y)
axis manual

Cree un objeto de transformada y configure su elemento principal en los ejes actuales. Represente un marcador y una anotación de texto al comienzo de la línea. Utilice la función num2str para convertir el valor y de ese punto en texto. Agrupe los dos objetos configurando sus elementos principales en el objeto de transformada.

ax = gca;
h = hgtransform('Parent',ax);
hold on
plot(x(1),y(1),'o','Parent',h);
hold off
t = text(x(1),y(1),num2str(y(1)),'Parent',h,...
    'VerticalAlignment','top','FontSize',14);

Mueva el marcador y el texto a cada punto posterior a lo largo de la línea actualizando la propiedad Matrix del objeto de transformada. Utilice los valores x e y del siguiente punto de la línea y el primer punto de la línea para determinar la matriz de transformada. Actualice el texto para que el valor y coincida a medida que se mueve a lo largo de la línea. Utilice drawnow para mostrar las actualizaciones en la pantalla después de cada iteración.

for k = 2:length(x)
    m = makehgtform('translate',x(k)-x(1),y(k)-y(1),0);
    h.Matrix = m;
    t.String = num2str(y(k));
    drawnow
end

La animación muestra el marcador y el texto moviéndose juntos a lo largo de la línea.

Si dispone de una gran cantidad de datos, puede utilizar drawnow limitrate en lugar de drawnow para que la animación sea más rápida. No obstante, es posible que drawnow limitrate no muestre todas las actualizaciones en la pantalla.

Consulte también

| | | | |

Temas relacionados