Скачиваний:
6
Добавлен:
28.04.2022
Размер:
9.81 Кб
Скачать
clear all, close all,
x0 = 10;
y0 = 10;
r = 5;%По условию окружность меньше ячейки
w=10;
h=10;
xx0=2;

peresy=0;
dy=0.01;
yy0=1;%координаты угла ячейки

x = x0-r:0.01:x0+r;
y=yy0;
ds=0;
y1 = sqrt(r^2 - (x - x0).^2)+y0;
y2 = -sqrt(r^2 - (x - x0).^2)+y0;
plot(x,y1,x,y2); axis square
rectangle('Position',[xx0 yy0 w h]);
dx=0.01;
sum=0;
x=xx0;
f = @mykavadrat;
mykavadrat(xx0,yy0);
function summ = mykavadrat(xx0,yy0)
while(x<xx0+w)
if(x>xx0)&&(x<xx0+w)
if(x>x0-r)&&(x<x0+r)
y1 = sqrt(r^2 - (x - x0)^2)+y0;
if(y1<yy0)
while (y1<yy0)&&(x<x0+r)
y1 = sqrt(r^2 - (x - x0)^2)+y0;
x=x+dx;
end
end
y2 = -sqrt(r^2 - (x - x0).^2)+y0;
if(y1<yy0+h)
if(y2>yy0)
ds=dx*(y1-y2);
sum=sum+ds;
rectangle('Position',[x y2 dx (y1-y2)]);
end
if(y2<yy0)
ds=dx*(y1-yy0);
sum=sum+ds;
rectangle('Position',[x yy0 dx (y1-yy0)]);
end
end
%важно что трубка меньше ячейки иначе нужно рассмотреть еще случий
if(y1>yy0+h)
if(y2<yy0)

ds=dx*(yy0+h-yy0);
if ds>0
sum=sum+ds;
rectangle('Position',[x yy0 dx (yy0+h-yy0)]);
end
end
if(y2>yy0)
ds=dx*(yy0+h-y2);
if ds>0
sum=sum+ds;
rectangle('Position',[x y2 dx (yy0+h-y2)]);
end
end
end

end
end
x=x+dx;
end
end




% xx1=xx0;
% yy1=yy0+h;
% sum2=0;
% ds=0;
% x=xx1;
% rectangle('Position',[xx1 yy1 w h]);
% axis([0 40 0 40]);
% %!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
% while(x<xx1+w)
% if(x>xx1)&&(x<xx1+w)
% if(x>x0-r)&&(x<x0+r)
% y1 = sqrt(r^2 - (x - x0)^2)+y0;
% if(y1<yy1)
% while (y1<yy1)&&(x<x0+r)
% y1 = sqrt(r^2 - (x - x0)^2)+y0;
% x=x+dx;
% end
% end
% y2 = -sqrt(r^2 - (x - x0).^2)+y0;
% if(y1<yy1+h)
% if(y2>yy1)
%
% ds=dx*(y1-y2);
% if ds>0
% sum2=sum2+ds;
% pos = [x y2 dx (y1-y2)];
% rectangle('Position',pos,'EdgeColor','r');
% end
% end
% if(y2<yy1)
% ds=dx*(y1-yy1);
% if ds>0
% sum2=sum2+ds;
% pos = [x yy1 dx (y1-yy1)];
% rectangle('Position',pos,'EdgeColor','r');
% end
% end
% end
% %важно что трубка меньше ячейки иначе нужно рассмотреть еще случий
% if(y1>yy1+h)
% if(y2<yy0)
%
% ds=dx*(yy1+h-yy0);
% if ds>0
% sum=sum+ds;
% rectangle('Position',[x yy0 dx (yy1+h-yy1)]);
% end
% end
% if(y2>yy0)
% ds=dx*(yy1+h-y2);
% if ds>0
% sum=sum+ds;
% rectangle('Position',[x y2 dx (yy1+h-y2)]);
% end
% end
% end
% end
% end
% x=x+dx;
% end
% %!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
% xx1=xx0+w;
% yy1=yy0;
% sum3=0;
% ds=0;
% x=xx1;
% rectangle('Position',[xx1 yy1 w h]);
% axis([0 40 0 40]);
% while(x<xx1+w)
% if(x>xx1)&&(x<xx1+w)
% if(x>x0-r)&&(x<x0+r)
% y1 = sqrt(r^2 - (x - x0)^2)+y0;
% if(y1<yy1)
% while (y1<yy1)&&(x<x0+r)
% y1 = sqrt(r^2 - (x - x0)^2)+y0;
% x=x+dx;
% end
% end
% y2 = -sqrt(r^2 - (x - x0).^2)+y0;
% if(y1<yy1+h)
% if(y2>yy1)
%
% ds=dx*(y1-y2);
% if ds>0
% sum3=sum3+ds;
% pos = [x y2 dx (y1-y2)];
% rectangle('Position',pos,'EdgeColor','b');
% end
% end
% if(y2<yy1)
% ds=dx*(y1-yy1);
% if ds>0
% sum3=sum3+ds;
% pos = [x yy1 dx (y1-yy1)];
% rectangle('Position',pos,'EdgeColor','b');
% end
% end
% end
% %важно что трубка меньше ячейки иначе нужно рассмотреть еще случий
% if(y1>yy0+h)
% if(y2<yy0)
%
% ds=dx*(yy0+h-yy0);
% if ds>0
% sum=sum+ds;
% pos = [x yy0 dx yy0+h-yy0];
% rectangle('Position',pos,'EdgeColor','b');
% end
% end
% if(y2>yy0)
% ds=dx*(yy0+h-y2);
% if ds>0
% sum=sum+ds;
% pos = [x y2 dx yy0+h-y2];
% rectangle('Position',pos,'EdgeColor','b');
% end
% end
% end
% end
% end
% x=x+dx;
% end
% %!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
% xx1=xx0+w;
% yy1=yy0+h;
% sum4=0;
% ds=0;
% x=xx1;
% rectangle('Position',[xx1 yy1 w h]);
% axis([0 40 0 40]);
% while(x<xx1+w)
% if(x>xx1)&&(x<xx1+w)
% if(x>x0-r)&&(x<x0+r)
% y1 = sqrt(r^2 - (x - x0)^2)+y0;
% if(y1<yy1)
% while (y1<yy1)&&(x<x0+r)
% y1 = sqrt(r^2 - (x - x0)^2)+y0;
% x=x+dx;
% end
% end
% y2 = -sqrt(r^2 - (x - x0).^2)+y0;
% if(y1<yy1+h)
% if(y2>yy1)
%
% ds=dx*(y1-y2);
% if ds>0
% sum3=sum3+ds;
% pos = [x y2 dx (y1-y2)];
% rectangle('Position',pos,'EdgeColor','g');
% end
% end
% if(y2<yy1)
% ds=dx*(y1-yy1);
% if ds>0
% sum3=sum3+ds;
% pos = [x yy1 dx (y1-yy1)];
% rectangle('Position',pos,'EdgeColor','g');
% end
% end
% end
% %важно что трубка меньше ячейки иначе нужно рассмотреть еще случий
% if(y1>yy0+h)
% if(y2<yy0)
%
% ds=dx*(yy0+h-yy0);
% if ds>0
% sum=sum+ds;
% pos = [x yy0 dx yy0+h-yy0];
% rectangle('Position',pos,'EdgeColor','b');
% end
% end
% if(y2>yy0)
% ds=dx*(yy0+h-y2);
% if ds>0
% sum=sum+ds;
% pos = [x y2 dx yy0+h-y2];
% rectangle('Position',pos,'EdgeColor','b');
% end
% end
% end
% end
% end
% x=x+dx;
% end

% while(x<xx1+w)
% if(x>xx1)&&(x<xx1+w)
% if(x>x0-r)&&(x<x0+r)
% y1 = sqrt(r^2 - (x - x0)^2)+y0;
% y2 = -sqrt(r^2 - (x - x0).^2)+y0;
% if(y1<yy1+h)
% if(y2>yy1)
% ds=dx*(y1-y2);
% sum=sum+ds;
% rectangle('Position',[x y2 dx (y1-y2)]);
% end
% if(y2<yy1)
% ds=dx*(y1-yy1);
% sum=sum+ds;
% rectangle('Position',[x yy0 dx (y1-yy1)]);
% end
% end
% if(y1>yy1+h)
%
% ds=dx*(yy1+h-y2);
% sum=sum+ds;
% rectangle('Position',[x y2 dx (yy1+h-y2)]);
% end
%
% end
% end
% x=x+dx;
% end






%
% peres1x=0;%сделать массив
% peres1y=0;
% peres2x=0;
% peres2y=0;
% peres34x=zeros(1,2);
% peres34y=zeros(1,2);
% peres56x=zeros(1,2);
% peres56y=zeros(1,2);
% pixel=zeros(2,2);

% yperes=sqrt(r^2 - (x - x0).^2)+y0;
% i=1;
% while(y<yy0+h)
% if(yperes-y<dy)
% peres1x=xx0;
% peres1y=yperes;
% end
% y=y+0.01;
% end
% yperes=-sqrt(r^2 - (x - x0).^2)+y0;
% y=yy0;
% while(y<yy0+h)
% if(yperes-y<dy)
% peres2x=xx0;
% peres2y=yperes;
% end
% y=y+0.01;
% end
%
% y=yy0+h;
% i=1;
% x=xx0;
% while(x<xx0+w)
%
% yperes=sqrt(r^2 - (x - x0).^2)+y0;
% if(y-yperes<dy)
% peres34x(i)=x;
% peres34y(i)=yperes;
% i=2;
% end
% if(peres34x(2)- peres34x(1)<dy)
% peres34x(2)=0;
% peres34y(2)=0;
%
% end
% x=x+0.01;
% end
% x=xx0;
% y=yy0;
% while(x<xx0+w)
%
% yperes=-sqrt(r^2 - (x - x0).^2)+y0;
% if(y-yperes<dy)
% peres56x(i)=x;
% peres56y(i)=yperes;
% i=2;
% end
% if(peres34x(2)- peres34x(1)<dy)
% peres56x(2)=0;
% peres56y(2)=0;
%
% end
% x=x+0.01;
% end
Соседние файлы в папке курсач 3 вар