201 views (last 30 days)

Show older comments

I would like to draw a segment of a circle (like a slice of a pizza) but cannot find an easy way to do it.

I am currently drawing triangles using fill function but ideally I need one side of the triangle to be curved. Is there a way to specify a curvature of a line? Thanks B

the cyclist
on 27 Apr 2011

There are several files in the File Exchange that will do what you want. Here is one:

Also, here is a simple function that could be modified to draw just a segment:

function h = circle(x,y,r,nsegments)

if nargin<4

nsegments=50;

end

hold on

th = 0:2*pi/nsegments:2*pi;

xunit = r * cos(th) + x;

yunit = r * sin(th) + y;

h = plot(xunit, yunit);

hold off

end

poonam tailor
on 31 Jan 2015

Matt Fig
on 27 Apr 2011

Here is another function to do it. It returns the handle to the patch object so that the color can be set or whatever.

function P = plot_arc(a,b,h,k,r)

% Plot a circular arc as a pie wedge.

% a is start of arc in radians,

% b is end of arc in radians,

% (h,k) is the center of the circle.

% r is the radius.

% Try this: plot_arc(pi/4,3*pi/4,9,-4,3)

% Author: Matt Fig

t = linspace(a,b);

x = r*cos(t) + h;

y = r*sin(t) + k;

x = [x h x(1)];

y = [y k y(1)];

P = fill(x,y,'r');

axis([h-r-1 h+r+1 k-r-1 k+r+1])

axis square;

if ~nargout

clear P

end

Now from the command line:

P = plot_arc(pi/4,3*pi/3,9,-4,3);

set(P,'edgecolor','b','linewidth',4)

zain ul haq
on 23 Dec 2019

Sir, can I plot the segmet with height too, I need to plot like a 3d slice of a cake

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

Start Hunting!