Aunque tengo previsto terminar y publicar el programa mañana, os doy un pequeño avance de lo que he hecho hoy.
Seguro que muchos de vosotros ya sabéis cómo resolver el problema, pero a mí me está pareciendo MUY interesante. Y divertido.
Elementos y Ecuaciones de la ElipseDada una elipse, en ella tenemos dos ejes.
a = Longitud del Semieje Mayor
b = Longitud del Semieje Menor
Ecuación de la Elipse : \( \dfrac{x^2}{a^2}+\dfrac{y^2}{b^2}=1 \)
f = Distancia de los Focos de la Elipse al centro
Se cumple: \( a^2=b^2+f^2 \)
Excentricidad: \( \varepsilon = \frac{f}{a} \)
El Semieje Mayor,
a, será igual al Radio del dibujo (\( Radio = \frac{Ancho}{2}-10 \))
A partir de la Excentricidad, \( \varepsilon \), despejamos y calculamos
\( f=\varepsilon *a \)
Y teniendo f, a partir de \( a^2=b^2+f^2 \) , podemos calcular b
\( b=\sqrt{a^2-f^2} \)
Análisis del problemaEn primer lugar debemos determinar si será mejor y más fácil usar coordenadas cartesianas o polares.
Elipse con Coordenadas CartesianasTenemos que recorrer el círculo completo, pero no estamos trabajando con coordenadas polares, sino cartesianas, por lo que tenemos que recorrer una de las dos coordenadas,
x ó
y, y calcular la otra.
Vamos a suponer que conocemos
x . El cálculo de
y sería:
\( \\\frac{x^2}{a^2}+\frac{y^2}{b^2}=1
\\\\\frac{y^2}{b^2}=1-\frac{x^2}{a^2}
\\\\y^2=(1-\frac{x^2}{a^2})*b^2
\\\\y^2=b^2-\frac{x^2*b^2}{a^2}
\\\\ y=\sqrt{b^2-\frac{x^2*b^2}{a^2}} \)
Entonces,
para x = -a hasta a, calculamos
y y podemos dibujar la parte inferior de la elipse yendo punto a punto por
x,y.
Y repitiendo el bucle, dibujamos la parte superior por los puntos
x,-y.
Como posteriormente nos va a hacer falta añadir la precesión, el segundo bucle debe ser
desde a hasta -a.
Pero antes de proceder a la programación vamos a ver si podemos hacer lo mismo con coordenadas polares.
Elipse con Coordenadas PolaresEn Wikipedia,
Elipse#En coordenadas polares, encontramos las siguientes fórmulas:
Radio centrado en el centro de la elipse\( r=\frac{b}{\sqrt{1-\varepsilon ^2*\cos(\Phi)^2}} \)
siendo \( \varepsilon \) la excentricidad y \( \Phi \) la dirección
Radio centrado en un foco\( r=\frac{a*(1-\varepsilon ^2)}{1-\varepsilon *\cos (\phi )} \)
El proceso de dibujo, en ambos casos sería muy simple
Para
d = 0 hasta 360 cada Grado Calcular
r (centrado en elipse o en foco)
Convertir coordenadas polares
dr en cartesianas,
xy Dibujar línea hasta
xyDefinitivamente, es más fácil, así que esta es la fórmula que usaré para el dibujo de la elipse.
Además, cuando tenga que añadir la precesión, será mucho más fácil hacerlo con coordenadas polares.
Y hasta aquí he llegado por hoy. Mañana procederé a programarlo y en cuanto lo termine y lo publique os lo diré.
PS. Seguro que habré cometido algún error, pero no os molestéis en corregirlo. En cuanto acabe y lo publique volveré a repasar todas las fórmulas.