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
hgtransform
| makehgtform
| plot
| drawnow
| axis
| text