I have an ellipse centered at $(h,k)$, with semi-major axis $r_x$, semi-minor axis $r_y$, both aligned with the Cartesian plane.
How do I determine if a point $(x,y)$ is within the area bounded by the ellipse?
Mathematics Stack Exchange is a question and answer site for people studying math at any level and professionals in related fields. It only takes a minute to sign up.
Sign up to join this communityI have an ellipse centered at $(h,k)$, with semi-major axis $r_x$, semi-minor axis $r_y$, both aligned with the Cartesian plane.
How do I determine if a point $(x,y)$ is within the area bounded by the ellipse?
The region (disk) bounded by the ellipse is given by the equation: $$ \frac{(x-h)^2}{r_x^2} + \frac{(y-k)^2}{r_y^2} \leq 1. \tag{1} $$ So given a test point $(x,y)$, plug it in $(1)$. If the inequality is satisfied, then it is inside the ellipse; otherwise it is outside the ellipse. Moreover, the point is on the boundary of the region (i.e., on the ellipse) if and only if the inequality is satisfied tightly (i.e., the left hand side evaluates to $1$).
h
and k
represent, is it the origin of the ellipse?
$\endgroup$
h
and k
represent the origin of the ellipse.
$\endgroup$
Another way uses the definition of the ellipse as the points whose sum of distances to the foci is constant.
Get the foci at $(h+f, k)$ and $(h-f, k)$, where $f = \sqrt{r_x^2 - r_y^2}$.
The sum of the distances (by looking at the lines from $(h, k+r_y)$ to the foci) is $2\sqrt{f^2 + r_y^2} = 2 r_x $.
So, for any point $(x, y)$, compute $\sqrt{(x-(h+f))^2 + (y-k)^2} + \sqrt{(x-(h-f))^2 + (y-k)^2} $ and compare this with $2 r_x$.
This takes more work, but I like using the geometric definition.
Also, for both methods, if speed is important (i.e., you are doing this for many points), you can immediately reject any point $(x, y)$ for which $|x-h| > r_x$ or $|y-k| > r_y$.
1) Consider the point as a vector
$$ p=\begin{bmatrix} x \\ y \\ \end{bmatrix} $$
2) Consider the center of the ellipse as
$$ c=\begin{bmatrix} h \\ k \\ \end{bmatrix} $$
3) Subtract the center of the ellipse $$ p_{centered}= p - c $$ 4) Create a whitening matrix $$ W = \Lambda^{-1/2}E^T $$ where $$ \Lambda = \begin{bmatrix} r_x & 0 \\ 0 & r_y \\ \end{bmatrix} $$ and $$ E = \begin{bmatrix} e_{major} & e_{minor}\\ \end{bmatrix} $$ where $e_{major}$ and $e_{major}$ are the unit vectors in the direction of the ellipse's major and minor axes. Since you're example is for a non-rotated matrix with major axis along x-axis and minor axis along y-axis
$e_{major}=\begin{bmatrix} 1\\ 0\\ \end{bmatrix}$ and $e_{minor}=\begin{bmatrix} 0\\ 1\\ \end{bmatrix}$
5) Whiten the point $$ p_{white} = Wp_{centered} $$ 6) Check if the length of the vector is less than 1. If it is, then the point is within the ellipse.
Note: this is inspired by my experience with Covariance matrices. I'll try to update this answer with an intuitive relation b/w ellipses and covariance matrices. For now you can take a peak at http://www.visiondummy.com/2014/04/draw-error-ellipse-representing-covariance-matrix/
I have another solution. In summary, transform everything so you can test whether a point is within a circle centered at (0,0). Since the ellipse is oriented orthogonally to the Cartesian plane, we can simply scale one of the dimensions by the quotient of the two axes.
First subtract (h,k) from both points.
(h,k) becomes (0,0). (x,y) becomes (x-h,y-k).
Now we scale the second coordinate, normalizing it to the first.
Scaling (x-h,y-k) we get $$ (x-h,(y-k) * \frac{r_x}{r_y}) $$
Now we simply need to test if $$ |(x-h,(y-k) * \frac{r_x}{r_y})| <= r_x $$