Как получить каноническое уравнение эллипса по N его точкам?

В результате ряда операций с окружностью с известными координатами, а именно: вращение ее "оси" под углами a, b вокруг осей Z, Y соответственно, и последующим ее проецированием на плоскость OXZ под углами c, d, был получен эллипс.
Известны: координаты центра эллипса,
его смещение относительно нулевой точки системы координат,
кооридинаты необходимого числа точек для вывода уравнения эллипса (проставляются на окружности до начала всех преобразований).

Неизвестны:
длины полуосей;
угол поворота полуосей;

Необходимо:
иметь возможность проверять принадлежность произвольной точки эллипсу, что требует вывода уравнения;
рассчитать площадь эллипса.

Расчетный алгоритм реализуется на JAVA, проверка правильности вычислений через чертежное ПО Kompas.

Изучил интернет на предмет возможных решений, однако или я слишком плохо разбираюсь или по делу почти ничего нет.
Варианта вижу два: для проверки принадлежности точки эллипсу, выполнить обратные преобразования проверяемой точки и проверить ее принадлежность окружности, но это не позволит вычислить площадь эллипса.
Второй вариант: представление эллипса как кривой второго порядка и решение матрицы с 5 неизвестными, однако не очень силен в программировании, как и в математике, чтобы задать алгоритм. Взял библиотеку JAMA, но так как там нельзя задать условия для искомых величин при решении матрицы, она просто все члены уравнения кривой второго порядка делает нулями, что и является решением матрицы.
Прошу подсказать наиболее короткий путь решения задачи или, если имеется, таковой, поделиться кодом.

На спроецированном эллипсе синие пересекающиеся прямые являются его осями, построенные благодаря функционалу Компаса. В общем-то задача сводится к тому, чтобы понять, как он определяет полуоси, зная центр эллипса и 3 любых принадлежащих ему точки
  • Вопрос задан
  • 1685 просмотров
Решения вопроса 2
@Taus
1. Для проверки попадания точки внутрь эллипса - ваше предложение наиболее разумное. Благо все преобразования аффинные и для них обратные строятся просто. Находите прообраз интересующей точки в плоскости окружности и легко проверяете попадание.
2. При аффинных преобразованиях перпендикулярные диаметры окружности перейдут в сопряжённые диаметры эллипса. Зная векторы сопряжённых диаметров c1, c2, легко вычислить площадь эллипса π Abs(VectorProduct(c1,c2)).

Если нужны какие-то ещё параметры эллипса, то их можно вычислить из свойств сопряжённых диаметров (в английской литературе conjugate diameters).
Главные диаметры часто строят с помощью Rytz's consturction.
Ответ написан
peaceddos
@peaceddos Автор вопроса
Решением проблемы оказался чертежный подход Ритца, к которому я подготовил математическое описание для своей ситуации и запрограммировал расчет.
https://es.wikiqube.net/wiki/Rytz%27s_construction
На мой взгляд, это лучшее решение.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
Параметрическое уравнение эллипса:
x = a * cos(t)
y = b * sin(t)
0 ≤ t ≤ 2π
где a, b − полуоси эллипса, t − параметр.

позволяет убрать из уравнения тригонометрию от t: (sin^2 + cos^2) = 1
и выразить a как функцию b при известных (x, y).
x2 = a2 * cos2(t)
y2 = b2 * sin2(t)
и изолировать sin,cos:
x2 / a2 = cos2(t)
y2 / b2 = sin2(t)
осталось сложить и вывести a = f(b)

x2 / a2 + y2 / b2 = 1

Upd. не учёл третье неизвестное: угол поворота осей.
В повернутой коорд. системе:
x' = x cos ß + y sin ß
y' = -x sin ß + y cos ß

Заменить этими выражениями простые x2 и y2
И как-то решить систему уравнений, подставив известные x, y точек.
Ответ написан
xmoonlight
@xmoonlight
https://sitecoder.blogspot.com
1. Есть две плоскости в единой системе координат (плоскость круга и плоскость, куда мы его будем проецировать).
2. Производим расчёт проекции любой произвольной точки, принадлежащей одной плоскости, на другую плоскость (3D): здесь.
3. Принадлежность точки кругу или эллипсу - проверяем точно также (п.2), используя нужную плоскость для проецирования точки на другую плоскость.

(Для окружности/круга: только частный случай - если речь не идёт об использовании перспективы/рассеивания! Например, не подойдёт, если необходима проекция луча прожектора с использованием перспективы)

PS: Приведение кривой второго порядка к каноническому виду (2D): тут.
Нужно подставить координаты 5-ти точек (уже спроецированных на плоскость) в каждое уравнение 2-го порядка и решить систему из 6-ти уравнений (5 и 1 канонический вид для эллипса) и 2-х неравенств (для коэффициентов эллипса) для поиска всех коэффициентов уравнения 2-го порядка для эллипса и при необходимости, привести его к каноническому виду.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы