中點算法畫圓

R=100;
x1=0;
y1=R;
d(1)=1-R;
x(1)=x1;
y(1)=y1;
n=1;
 % 中點在園內,應該取上面那個點
 % 代表d>0 中點在圓外,應該取下面那個點
while x<y
  if d(n)<0
    x(n+1) = x(n)+1;
    y(n+1) = y(n);
    d(n+1) = d(n)+2*x(n)+3;
  else
      x(n+1)=x(n)+1;
      y(n+1)=y(n)-1;
      d(n+1)=d(n)+2*(x(n)-y(n))+5;
  end
  n=n+1;  
end

% 使用循環 畫 一 二 三 四象限
for j =1:8
  if j==1
    for i = 1:n
      plot(x, y);
    end
    for i=1:n
      x2=y;
      y2=x;
    end
    elseif j==2
      % 
      for i=1:n
        plot(x2,y2);
      end
      for i=1:n
        x3=-y;
        y3=x;
      end
      % 
    elseif j==3
      % 
      for i=1:n
        plot(x3,y3)
      end
      for i=1:n
        x4=-x;
        y4=y;
      end
      % 
    elseif j==4
      % 
      for i=1:n
        plot(x4,y4)
      end
      for i=1:n
        x5=-x;
        y5=-y;  
      end
      % 
    elseif j==5
      % 
      for i=1:n
        plot(x5,y5)
      end
      for i=1:n
        x6=-y;
        y6=-x;  
      end
      % 
    elseif j==6
      % 
      for i=1:n
        plot(x6,y6)
      end
      for i=1:n
        x7=y;
        y7=-x;  
      end
      % 
    elseif j==7
      % 
      for i=1:n
        plot(x7,y7)
      end
      for i=1:n
        x8=x;
        y8=-y;  
      end
      % 
    elseif j==8
      % 
      for i=1:n
        plot(x8,y8)
      end
      % 
  end
  hold on;
end 

得到結果:
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章