Guarda, premetto che non saprei proprio come risolvere il tuo problema, ma con un codice di questo tipo l'oggetto sembrerà sempre rallentare.
Questo perchè tu campioni l'angolo in modo uniforme: però, come hai notato, questo non corrisponde ad una distanza uniforme lungo l'ellisse.
In pratica tu stai campionando la variabile sbagliata: tu vuoi dividere in intervalli uguali l'ellisse, ma nel codice dividi in intervalli l'angolo che sottende il segmento di ellisse, e non è la stessa cosa.
Vedo se mi viene in mente qualcosa![]()