54 views (last 30 days)

Show older comments

I have the bounds of an ellipse in x- and y-coordinates. My end goal is to get a matrix of all x-values and a corresponding matrix of all y-values for the points in/out that ellipse. If possible, I would also like to color in the specified ellipse on a 2d plot. Does anyone know which commands/functions I can use to do this? Most of what I have seen simply confirms whether input values lie in/out an ellipse. Thank you!

such that a sample of the ellipse is represented as :

xCenter = 15;

yCenter = 10;

xRadius = 1.5;

yRadius = 80;

theta = 0 : 0.01 : 2*pi;

x = xRadius * cos(theta) + xCenter;

y = yRadius * sin(theta) + yCenter;

plot(x, y, 'LineWidth', 3);

Walter Roberson
on 29 Dec 2017

Star Strider
on 29 Dec 2017

‘My end goal is to get a matrix of all x-values and a corresponding matrix of all y-values for the points in/out that ellipse.’

There would be an infinite number of them, since you have defined an infinite 2D space. Your computer (or any computer) likely cannot handle it.

‘If possible, I would also like to color in the specified ellipse on a 2d plot’

That’s more tractable. See the patch (link) and related functions (such as area and fill, linked to at the end of that page) to create your plot. Remember to specify axis equal to avoid distorting your ellipse plot.

Star Strider
on 30 Dec 2017

If you want to know the points inside and outside the ellipse, and there are a specific number of them, use the inpolygon (link) function. I know that you mentioned that you apparently do not want to use it, however it is the most efficient option.

Otherwise, if you want the area of the ellipse, you can use the trapz function twice (once in each dimension), or create an anonymous function representation for your ellipse and use integral2, or for a vector valued function, integral once in each dimension.

azdoud youssef
on 30 Dec 2017

Waqar Khan
on 18 Mar 2021

Deepu Kumar
on 30 Jul 2021

Edited: Deepu Kumar
on 30 Jul 2021

I think this is what you were asking.

In place of xCenter and yCenter, you can choose what ever the values that you want.

Similarly, the limits of xRadius and yRadius is of your choice.

xCenter = 0;

yCenter = 0;

xRadius = 1.41631:-(1.41631)/100:0;

yRadius = 0.53:-(0.53)/100:0;

theta = 0 : (2*pi)/100 : 2*pi;

for i=1:length(xRadius)

xx=xRadius(i);

yy=yRadius(i);

for j=1:length(yRadius)

x(i,j) = xx * cos(theta(j)) + xCenter;

y(i,j) = yy * sin(theta(j)) + yCenter;

end

end

plot(x, y, 'LineWidth', 3);

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

Start Hunting!