Puntos moviéndose a lo largo de una curva dentro de MATLAB
set plot matlab (1)
Aquí se explica cómo puede agregar otro punto que comience a deslizarse desde el extremo independientemente del primer punto.
En su código, antes de la línea %#Infinite loop
, agregue lo siguiente:
hLine2 = line(''XData'',x(end), ''YData'',y(end), ''Color'',''g'', ...
''Marker'',''o'', ''MarkerSize'',6, ''LineWidth'',2);
hTxt2 = text(x(end), y(end), sprintf(''(%.3f,%.3f)'',x(1),y(1)), ...
''Color'',[0.2 0.2 0.2], ''FontSize'',8, ...
''HorizontalAlignment'',''left'', ''VerticalAlignment'',''top'');
y dentro del ciclo, antes del comando drawnow
, agregue lo siguiente:
set(hLine2, ''XData'',x(end-i), ''YData'',y(end-i))
set(hTxt2, ''Position'',[x(end-i) y(end-i)], ...
''String'',sprintf(''(%.3f,%.3f)'',[x(end-i) y(end-i)]))
Entonces, su segundo punto se desliza hacia abajo y el primero se desliza hacia arriba. Puede definir la trayectoria del punto como desee en la definición de hLine2
y hTxt2
He logrado editar una parte del código que me fue entregado para mostrar un punto moviéndose a lo largo de una curva.
Estoy tratando de encontrar una forma de editar esto para crear dos puntos independientes que se muevan a lo largo de esta curva o para crear una segunda figura que muestre otro punto moviéndose a lo largo de un gráfico. El punto principal es que los puntos deben ser independientes entre sí para que se les pueda aplicar un algoritmo.
Actualmente tengo el siguiente código que proporciona un único punto moviéndose a lo largo de la curva:
%# control animation speed
DELAY = 0.01;
numPoints = 600;
%# create data
x = linspace(0,1,numPoints);
f = 5;
C = 1-exp(-f);
y = C*(1-(exp(-f*x)));
%# plot graph
figure(''DoubleBuffer'',''on'') %# no flickering
plot(x,y, ''LineWidth'',2), grid on
xlabel(''x''), ylabel(''y''), title('''')
%# create moving point + coords text
hLine = line(''XData'',x(1), ''YData'',y(1), ''Color'',''r'', ...
''Marker'',''o'', ''MarkerSize'',6, ''LineWidth'',2);
hTxt = text(x(1), y(1), sprintf(''(%.3f,%.3f)'',x(1),y(1)), ...
''Color'',[0.2 0.2 0.2], ''FontSize'',8, ...
''HorizontalAlignment'',''left'', ''VerticalAlignment'',''top'');
%# infinite loop
i = 1; %# index
while true
%# update point & text
set(hLine, ''XData'',x(i), ''YData'',y(i))
set(hTxt, ''Position'',[x(i) y(i)], ...
''String'',sprintf(''(%.3f,%.3f)'',[x(i) y(i)]))
drawnow %# force refresh
%#pause(DELAY) %# slow down animation
i = rem(i+1,numPoints)+1; %# circular increment
if ~ishandle(hLine), break; end %# in case you close the figure
end