Disk out of an arc
4 views (last 30 days)
Show older comments
Minas Emiris
on 11 Apr 2018
Commented: Minas Emiris
on 14 Apr 2018
I was wondering how to create a matrix of points inside an arc of a specific radius R. My goal is my matrix to have a sufficient number of elements, so that when creating a 2D/3D plot, the shape appear as a surface. My idea is to create a set of many arcs, so that the shape appears as continuous. I used a fairly easy code to create arcs of angle pi/8:
R = 0;
theta = pi/8;
x = linspace(R*cos(theta),R,100);
y = sqrt (R^2 - x.*x);
plot(x,y)
xlim([0 5])
ylim([0 5])
hold on
R = 1;
x = linspace(R*cos(theta),R,100);
y = sqrt (R^2 - x.*x);
plot(x,y)
hold on
R = 2;
x = linspace(R*cos(theta),R,100);
y = sqrt (R^2 - x.*x);
plot(x,y)
hold on
R = 3;
x = linspace(R*cos(theta),R,100);
y = sqrt (R^2 - x.*x);
plot(x,y)
hold on
R = 4;
x = linspace(R*cos(theta),R,100);
y = sqrt (R^2 - x.*x);
plot(x,y)
hold on
R = 5;
x = linspace(R*cos(theta),R,100);
y = sqrt (R^2 - x.*x);
plot(x,y)
hold on
How can I continue a similar procedure with a function that avoids writing so many values of R manually? I thought using R = linspace (0,Rmax,N), where Rmax is the radius of the disk, N the number of arcs, but his doesn't appear to work; there is an error with the functions I am using.
Accepted Answer
Are Mjaavatten
on 11 Apr 2018
Edited: Are Mjaavatten
on 11 Apr 2018
Is this what you want?
R = 5;
x = linspace(R*cos(theta),R,100);
y = sqrt (R^2 - x.*x);
x = [0,x];
y = [0,y];
patch(x,y,'b')
Alternatively, by plotting one arc at a time, as you proposed:
figure;
hold on
N = 300;
Rmax = 5;
R = linspace (0,Rmax,N);
for i = 1:N
x = linspace(R(i)*cos(theta),R(i),100);
y = sqrt (R(i)^2 - x.*x);
plot(x,y,'b');
end
More Answers (0)
See Also
Categories
Find more on Language Fundamentals in Help Center and File Exchange
Products
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!