How can I draw a special circle separated by two colors?

1 次查看(过去 30 天)
Hi all.. I knew how to draw a complete circle separated by two color through asking question as following.
c=1+2j % circle centre
r=4 % radius
x=real(c)-r:0.01:real(c)+r
y1=sqrt(r^2-(x-real(c)).^2)+imag(c)
plot(x,y1,'r')
hold on
plot(x,-y1+2*imag(c),'b')
axis square
Ultimately, I am planning to draw two colored circles (including gray, white) of following picture.
Which code can I use to draw special circle?
I'd like to accept advice or idea from many people as far as possible.

回答(1 个)

Image Analyst
Image Analyst 2012-10-26
I'd do it in Photoshop and then just read it in as an image. Why do it the hard way like trying to recreate it via MATLAB? You haven't said if any of your parameters will change from run to run, so I'm assuming that they won't and they'll just use the constant values you gave, like radius = 4, etc. If any of them need to change on a run-by-run basis you should have / would have said so. So that's why I say to use Photoshop (or GIMP or Paint).
  4 个评论
Haksun Lee
Haksun Lee 2012-10-26
Yes.. the rest of image was already constructed and read in as an image.
I have only to draw the gray and white arcs.
I can't draw arcs shape colored gray and white, but I tried seeing the samples given in the FAQ.
I have sample to draw special circle as following. At this code, I have serious problem because of 'for' sentence. Whenever data is changed, 'for' sentence is executed so program slows as updated data. How can I draw the special circle without 'for' sentence.
axes('units','pixels','pos',[56 165 280 300]);
x=[128 137 137 128 128];
y=[5 5 -5 -5 5];
for t=0:1:data_update
arm=fill(x,y,[0.5 0.5 0.5],'LineStyle','none');
angle=1.29*pi-0.00528*pi*t;
rot=[cos(angle) -sin(angle); sin(angle) cos(angle)];
updatecoordinate=rot*[x;y];
updateX=updatecoordinate(1,:);
updateY=updatecoordinate(2,:);
set(arm,'Xdata', updateX, 'Ydata', updateY);
end
Image Analyst
Image Analyst 2012-10-26
try doing the inner and outer arcs then using poly2mask to get a binary image of the center of the arc filled in. Then apply the mask to the image
arcImage = poly2mask(coords, rows, columns);
grayImage(arcImage) = 200; % or whatever value the color gray is.
or something like that.

请先登录,再进行评论。

标签

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by