Disk out of an arc
1 visualización (últimos 30 días)
Mostrar comentarios más antiguos
Minas Emiris
el 11 de Abr. de 2018
Comentada: Minas Emiris
el 14 de Abr. de 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.
2 comentarios
Jan
el 11 de Abr. de 2018
"doesn't appear to work" and "there is an error" is less useful to clarify the problem. Please post a copy of the complete error message.
What about using a surface to display a surface?
Respuesta aceptada
Are Mjaavatten
el 11 de Abr. de 2018
Editada: Are Mjaavatten
el 11 de Abr. de 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
6 comentarios
Are Mjaavatten
el 12 de Abr. de 2018
This does what you ask for:
[x,ix] = sort(X(:));
y = Y(ix);
plot(x,y,'.')
But somehow I doubt that this is what you want.
I really hate this this damn machine,
I wish that they would sell it.
It never does quite what I mean
but only what I tell it!
The programmer's lament ( from the time before PCs):
Más respuestas (0)
Ver también
Categorías
Más información sobre Surface and Mesh Plots en Help Center y File Exchange.
Productos
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!