Если вы знаете, центр и радиус внутренних окружностей вы способны вычислить X
и Y
координаты окружностей, то вы можете использовать функцию inpolygon для thest, если точка находится внутри circle (inpolygon
возвращает 1
, если точка внутри полигона, 0
в противном случае). В этом случае полигон состоит из точек окружностей.
В следующем коде точка перемещается по трем кругам (две из них расположены внутри большего).
Функция inpolygon
используется для проверки того, находится ли точка (мяч) внутри круга и изменяет ее цвет в соответствии с кругом, в котором он находится.
% Define the radius and centre of three circles
r1=10;
r2=3
r3=4
c1=[0 0];
c2=[3 3];
c3=[-4 -4]
% Calculate the X and Y coord of the three circles
t=0:.01:2*pi;
x=cos(t)*r1
y=sin(t)*r1
x1=cos(t)*r2+c2(1)
y1=sin(t)*r2+c2(2)
x2=cos(t)*r3+c3(1)
y2=sin(t)*r3+c3(2)
% Plot the circles
plot(x,y,'r')
hold on
plot(x1,y1,'g')
plot(x2,y2,'b')
daspect([1 1 1])
% Define the ball trajectory
mx=-10:1:10;
my=-10:1:10;
for i=1:length(mx)
% Plot the ball: black if outside of all the circle
mh=plot(mx(i),my(i),'o','markerfacecolor','k','markeredgecolor','k')
% If the ballk is inside the first circle, make it red
if(inpolygon(mx(i),my(i),x,y))
mh.MarkerFaceColor='r';
mh.MarkerEdgeColor='r';
end
if(inpolygon(mx(i),my(i),x1,y1))
% If the ballk is inside the second circle, make it green
mh.MarkerFaceColor='g';
mh.MarkerEdgeColor='g';
end
if(inpolygon(mx(i),my(i),x2,y2))
% If the ballk is inside the third circle, make it blue
mh.MarkerFaceColor='b';
mh.MarkerEdgeColor='b';
end
pause(1)
end
Надеется, что это помогает.
Qapla '
Что вы знаете о внутренних кругах? Центр? Радиус? –
Он помогает другим пользователям, и, как правило, [отметить ответы (ссылка)] (http://stackoverflow.com/help/someone-answers), которые вы получили по этому вопросу. – zdim