Довольно простой подход:
Сделать начальное значение для аппроксимации расстояния D, например D=Sqrt(Pi*b/N )
, где b - длина вспомогательной оси.
Создание треугольной сетки (с равносторонними треугольниками для обеспечения наиболее плотной упаковки) точек с размером ячейки D. Подсчитайте количество точек, лежащих внутри данного эллипса.
Если оно меньше N, уменьшите расстояние D, больше - увеличьте D. Повторяйте, пока внутри точно не будет N точек.
Зависимость CountInside <=> D
является монотонной для фиксированной начальной точки, поэтому вы можете использовать бинарный поиск, чтобы получить результат быстрее.
Могут быть сложные случаи с 2-4 симметричными точками вблизи границы - когда они выходят наружу или внутрь одновременно. Если вы поймаете этот случай, немного сдвиньте начальную точку.