Скачиваний:
7
Добавлен:
28.04.2022
Размер:
10 Кб
Скачать
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 вар