8 votos

¿Cómo encontrar el centro de una elipse?

Tengo los siguientes datos:-

  • Tengo dos puntos ( $P_1$ , $P_2$ ) que se encuentran en algún lugar de la circunferencia de la elipse.
  • Conozco el ángulo ( $\alpha$ ) que el eje mayor subtiende en el eje x.
  • Tengo los dos radios ( $a$ y $b$ ) de la elipse.

Ahora necesito encontrar el centro de esta elipse. Se sabe que podemos obtener dos posibles elipses utilizando los datos anteriores.

He intentado resolverlo yo mismo pero la ecuación se vuelve tan compleja que siempre me rindo.

Esto es lo que he hecho hasta ahora:-

Tomé la ecuación normal de la elipse $x^2/a^2 + y^2/b^2 = 1$ . Para compensar la rotación y la traslación, he sustituido $x$ y $y$ por $x\cos\alpha+y\sin\alpha-h$ y $-x\sin\alpha+y\cos\alpha-k$ respectivamente. $h$ y $k$ son la ubicación en x e y del centro de la elipse.

Usando esta información terminé con la siguiente eq:- $$a B_1\pm\sqrt{a^2 B_1^2 - C_1(b^2 h^2 - 2 A_1 b^2 h)} = a B_2\pm\sqrt{a^2 B_2^2 - C_2 (b^2 h^2 - 2 A_2 b^2 h)} \quad (1)$$

donde $A = x\cos\alpha +y\sin\alpha$ , $B = -x\sin\alpha+y\cos\alpha$ y $C = a^2 B^2 + A^2 b^2 - a^2 b^2$ .

Ahora lo único que necesito conseguir es $h$ de (1). Todos los demás valores son conocidos, pero no soy capaz de distinguirlo.

De todos modos, si las ecuaciones anteriores parecen una locura, resuélvelas tú mismo, a tu manera. Podría haberme desviado hacia un camino muy complicado.

9voto

Jon Clegg Puntos 661

Que los puntos sean $P_1(x_1, y_1)$ y $P_2(x_2, y_2)$ se supone que se encuentra en una elipse de semiejes $a$ y $b$ con el $a$ eje que hace el ángulo $\alpha$ a la $x$ eje.

Ellipse

Siguiendo a @joriki, rotamos los puntos $P_i$ por $-\alpha$ en puntos

$$Q_i(x_i \cos(\alpha) + y_i \sin(\alpha), y_i \cos(\alpha) - x_i \sin(\alpha)).$$

A continuación, los reescalamos mediante $(1/a, 1/b)$ a los puntos

$$R_i(\frac{x_i \cos(\alpha) + y_i \sin(\alpha)}{a}, \frac{y_i \cos(\alpha) - x_i \sin(\alpha)}{b}).$$

Circle

Estas operaciones convierten la elipse en una circunferencia unitaria y los puntos forman una cuerda de dicha circunferencia. Traslademos ahora el punto medio de la cuerda al origen: esto se hace restando $(R_1 + R_2)/2$ (mostrado como $M$ en la figura) de cada uno de $R_i$ , dando puntos

$$S_1 = (R_1 - R_2)/2, \quad S_2 = (R_2 - R_1)/2 = -S_1$$

cada una de ellas con una longitud $c$ . La mitad de la longitud de esa cuerda es

$$c = ||S_1||/2,$$

que, por supuesto, se encuentra entre $0$ y $1$ incluso. Establecer

$$s = \sqrt{1-c^2}.$$

El origen del círculo se encuentra girando cualquiera de las $S_i$ en 90 grados (en cualquier dirección) y reescalando en $s/c$ , dando hasta dos soluciones válidas $O_1$ y $O_2$ . (Rotación de un punto $(u,v)$ en 90 grados lo envía a $(-v,u)$ o $(v,-u)$ .) Por ejemplo, en la figura anterior es evidente que la rotación $R_1$ en -90 grados alrededor de $M$ y escalando por $s/c$ lo hará coincidir con el centro del círculo. Reflejando el centro sobre $M$ (que da $2M$ ) produce la otra solución posible.

Desenvolver todo esto requiere que hagamos lo siguiente a la $O_i$ :

  • Traducir por $(R_1+R_2)/2$ ,
  • Escala por $(a,b)$ y
  • Girar por $\alpha$ .

Los casos $c \gt 1$ , $c = 1$ y $c=0$ tienen que ser tratados especialmente. La primera no da ninguna solución, la segunda una solución única, y la tercera infinitas.

Por cierto, aquí hay un Mathematica 7 función. Los argumentos p1 y p2 son listas de números de longitud 2 ( es decir coordenadas del punto) y los otros argumentos son números. Devuelve una lista de los posibles centros (o Null si hay infinitos).

f[\[Alpha]_, a_, b_, p1_, p2_] := Module[
   {
    r, s, q1, q2, m, t, \[Gamma], u, r1, r2, x, v
    },
   (* Rotate to align the major axis with the x-axis. *)
   r = RotationTransform[-\[Alpha]];
   (* Rescale the ellipse to a unit circle. *)
   s = ScalingTransform[{1/a, 1/b}];
   {q1, q2} = s[r[#]] & /@ {p1, p2};
   (* Compute the half-length of the chord. *)
   \[Gamma] = Norm[q2 - q1]/2;
   (* Take care of special cases. *)
   If[\[Gamma] > 1, Return[{}]];
   If[\[Gamma] == 0, Return[Null]];
   If[\[Gamma] == 1, 
    Return[{InverseFunction[Composition[s, r]][(q1 + q2)/2]}]];
   (* Place the origin between the two points. *)
   t = TranslationTransform[-(q1 + q2)/2];
   (* This ends the transformations.  
   The next steps find the centers. *)
   (* Rotate the points 90 degrees. *)
   u = RotationTransform [\[Pi]/2];
   (* Rescale to obtain the possible centers. *)
   v = ScalingTransform[{1, 1} Sqrt[1 - \[Gamma]^2]/\[Gamma]];
   x = v[u[t[#]]] & /@ {q1, q2};
   (* Back-transform the solutions. *)
   InverseFunction[Composition[t, s, r]] /@ x
   ];

7voto

JiminyCricket Puntos 143

Puedes hacer tu vida mucho más fácil girando los dos puntos dados a través de $-\alpha$ en lugar de girar el sistema de coordenadas por $\alpha$ . Entonces puedes trabajar con la ecuación mucho más simple

$$\frac{(x-x_0)^2}{a^2}+\frac{(y-y_0)^2}{b^2}=1\;.$$

Si sustituyes tus dos puntos (girados) $(x_1,y_1)$ y $(x_2,y_2)$ se obtienen dos ecuaciones para las dos incógnitas $x_0$ , $y_0$ . Al restarlos se eliminan los términos cuadráticos de las incógnitas y se obtiene la relación lineal

$$\frac{x_1^2-x_2^2-2(x_1-x_2)x_0}{a^2}+\frac{y_1^2-y_2^2-2(y_1-y_2)y_0}{b^2}=0\;.$$

Puedes resolver esto para una de las incógnitas y sustituir el resultado en una de las dos ecuaciones cuadráticas, que entonces se convierte en una ecuación cuadrática en la otra incógnita que puedes resolver.

Por supuesto, al final tienes que girar el centro que encuentres de nuevo al sistema de coordenadas original.

2voto

Andrew Puntos 140

Como la expresión en el comentario de whuber era demasiado larga, aquí está la expresión de la coordenada x:

$$\begin{align*} &\frac1{2ab}\left(ab (x_1+x_2)+\left(a^2 (y_2-y_1)\cos^2\alpha+(a-b)(a+b) (x_1-x_2) \cos\,\alpha\sin\,\alpha+b^2 (y_2-y_1)\sin^2\alpha\right)\right.\\ &\left.\surd \left(\left(b^2 \left((x_1-x_2)^2+(y_1-y_2)^2\right)+a^2 \left(-8 b^2+(x_1-x_2)^2+(y_1-y_2)^2\right)+\right.\right.\right.\\ &\left.\left.\left.(a-b)(a+b) (-(x_1-x_2+y_1-y_2) (x_1-x_2-y_1+y_2) \cos\,2\alpha-2 (x_1-x_2) (y_1-y_2) \sin\,2\alpha)\right)/\right.\right.\\ &\left.\left.\left(-\left(a^2+b^2\right) \left((x_1-x_2)^2+(y_1-y_2)^2\right)+(a-b) (a+b) ((x_1-x_2+y_1-y_2) (x_1-x_2-y_1+y_2) \cos\,2\alpha+\right.\right.\right.\\ &\left.\left.\left.2(x_1-x_2)(y_1-y_2)\sin\,2\alpha)\right)\right)\right) \end{align*}$$

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X