2017-02-06 4 views
0

私は、3分の1に分割された円を描き、それぞれの三分の一を別のRGBカラーでMATLABに塗りたい。それぞれを異なる色で3/3に分割した円をプロットするMATLAB

私は円を描き、すべてを1色で塗りつぶし始めました。それから私は3つの平等な領域でその円を分けました。今私は円の各スライスに異なる色をつけようとしています。誰か助けてくれますか?

ありがとうございます。

% FilledCircle3 : function that takes 5 inputs 
% 
% Call the function: 
% FilledCircle3(x0,Row,Radius,N,Color) 
% 
% Inputs Types 
% ------------ 
% x0 - Integer, Float 
% y0 - Integer, Float 
% Radius - Integer, Float 
% N  - Integer 
% Color - Character String 
% 
% Notes on N: The more N increases, the more accurate is the circle 
%    The standard value for N is 256 
% 
% Notes on Color: 
% 'b'  blue   
% 'g'  green   
% 'r'  red   
% 'c'  cyan    
% 'm'  magenta  
% 'y'  yellow  



function []=FilledCircle3(x0,y0,Radius,N,Color) 

if(N<=1) 
    error('N must be greater than 1'); 
end 

if (Color ~='b') && (Color ~='g') && (Color ~= 'r') && (Color ~='c') && (Color ~='m') && (Color ~='y') 
    error('This is not an available color'); 
end 
hold on 
axis equal 
t=(0:N)*2*pi/N; %t=-pi:0.01:pi 
x=Radius*cos(t)+x0; 
y=Radius*sin(t)+y0; 
plot(x,y,Color, fill(x,y,Color)); 
hold on 

% Divide circle into 3 sectors 
n=3 
tet=linspace(-pi,pi,n+1) 
xi=r*cos(tet)+x0 
yi=r*sin(tet)+y0 
for k=1:numel(xi) 
plot([x0 xi(k)],[y0 yi(k)]) 
hold on 
end 

答えて

0

あなたが満たされた図形を作成するためにfillを使用する必要があります。

は、ここに私のコードです。

thetas = linspace(-pi, pi, n+1); 

% Specify any colors that you want 
colors = hsv(n); 

for k = 1:n 
    tt = linspace(thetas(k), thetas(k+1)); 
    xi = r * cos(tt) + x0; 
    yi = r * sin(tt) + y0; 

    fill([xi(:); x0], [yi(:); y0], colors(k,:)); 

    hold on 
end 
+0

ありがとうございます!あなたはhsv colors @Sueverを選んだ理由はありますか? – Mraquel

+0

@Mraquel私が選んだ色は任意です。あなたは好きな色を使うことができます。 – Suever

関連する問題