Aproximación razonable
Como ya se indicó en otras respuestas, no hay una forma exacta de hacer esto. Sin embargo, es posible aproximar eficientemente una solución.
Mi fórmula solo manejará el cuadrante superior derecho . Se deberán aplicar varios cambios de signos para manejar otros cuadrantes.
Deje d ser su distancia de arco deseada entre puntos consecutivos. Supongamos que el último punto trazado está en (x, y) .
|
b +-------._ (x,y)
| `@-._
| `-.
| `.
| \
-+--------------------+--->
O| a
Luego, el siguiente punto debe trazarse en las siguientes coordenadas:
x' = x + d / sqrt(1 + b²x² / (a²(a²-x²)))
y' = b sqrt(1 - x'²/a²)
Prueba
Deje que el siguiente punto esté en (x + Δx, y + Δy) . Ambos puntos satisfacen la ecuación de elipse:
x²/a² + y²/b² = 1
(x+Δx)²/a² + (y+Δy)²/b² = 1
Deshacerse de y en las ecuaciones da:
Δy = b (sqrt(1 - (x+Δx)²/a²) - sqrt(1 - x²/a²))
Suponemos que Δx es lo suficientemente pequeño, por lo que reemplazamos f (x + Δx) -f (x) con f '(x) Δx usando la aproximación lineal para f' :
Δy = -bxΔx / (a² sqrt(1 - x²/a²))
Si d es lo suficientemente pequeño, entonces Δx y Δy son lo suficientemente pequeños y la longitud del arco está cerca de la distancia euclidiana entre los puntos. Por lo tanto, la siguiente aproximación es válida:
Δx² + Δy² ~ d²
Reemplazamos Δy en lo anterior y resolvemos para Δx :
Δx ~ d / sqrt(1 + b²x² / (a²(a²-x²)))
¿Qué pasa si d no es lo suficientemente pequeño?
Si d es demasiado grande para las aproximaciones anteriores sean válidas, simplemente reemplazar d con d / N , por ejemplo N = 3 , y sólo trazar un punto de N .
Nota final
Este método tiene problemas en los extremos ( x = 0 o y = 0 ), que pueden abordarse utilizando aproximaciones adicionales ( es decir, omitir el último punto del cuadrante, ya sea que esté trazado o no).
El manejo de toda la elipse probablemente será más robusto al rehacer todo usando coordenadas polares. Sin embargo, es algo de trabajo, y esta es una vieja pregunta, así que solo lo haré si hay algún interés en el póster original :-)