Как переместить круг с помощью сюжета в Matlab
Я хотел бы нарисовать круг и переместить его на рисунке сюжета Matlab. я использую
viscircles([8.1, 8.5], 1);
рисовать круги. Как мне вызвать это снова, чтобы нарисовать новый круг и удалить исходный круг? Также есть ли способ, которым я могу использовать
drawnow
Функция для этого?
2 ответа
Решение
Вместо удаления и перерисовки, просто переместите круг, введя некоторую константу в данные X и Y.
%%%%Borrowing some code from irreducible's answer%%%%
xc=1; yc=2; r=3;
th = 0:pi/50:2*pi;
x = r * cos(th) + xc;
y = r * sin(th) + yc;
h = plot(x, y);
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
axis([-20 20 -20 20]); %Fixing axis limits
for k=1:20 %A loop to visualise new shifted circles
h.XData = x + randi([-10 10],1); %Adding a constant in the x data
h.YData = y + randi([-10 10],1); %Adding a constant in the y data
pause(0.5); %Pausing for some time just for convenient visualisation
end
Одна возможность - создать собственную функцию окружности, которая возвращает дескриптор сюжета:
function h = my_circle(xc,yc,r)
% xc x-center of circle
% yc y-center of circle
% r radius
th = 0:pi/50:2*pi;
x = r * cos(th) + xc;
y = r * sin(th) + yc;
hold on
h = plot(x, y);
hold off;
После этого вы можете построить свой круг
h = my_circle(1,2,3);
и удалите его, если он вам больше не нужен:
delete(h)
После этого вы можете построить новый:
h2 = my_circle(1,2,4);