Как переместить круг с помощью сюжета в 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);
Другие вопросы по тегам