Пусть у вас есть эллипс. Пусть
—вектор, ортогональный эллипсу и который торчит наружу. Он зависит от точки на эллипсе:
, причём точка с радиус-вектором
должна лежать на эллипсе (=удовлетворять его уравнению). Если в точке
касательная вертикальная, то
горизонтален и наоборот: если в точке
касательная горизонтальная, то
вертикален.
В данном случае у вас эллипс расположен как попало, но известны точки
и
вертикальности и горизонтальности касательной в "обычной" системе координат. Предположите, что ваш эллипс повёрнут на угол
против часовой стрелки. Перейдите матрицей поворота в эту систему координат, где её оси лежат вдоль осей эллипса, назовём её "правильной", радиус-векторы будем в ней обозначать
:
и пересчитайте векторы
,
в "правильную" систему координат.
В этой системе координат легко написать, чему равен нормальный вектор
. В точках
и
он не будет ни вертикальным, ни горизонтальным в "правильной" системе координат. Вы делаете следующее: определяете
,
и при помощи матрицы
перегоняете их в "обычную" систему координат, где они должны быть горизонтальны и вертикальны. Решаете уравнение на угол
(если вам известно, чему равны полуоси, достаточно одного уравнения, но из этого принципа их получается два - по одному на каждый вектор (уравнение состоит в том, что та или иная компонента обнуляется)).
Если полуоси не известны, нужно добавить ещё два уравнения: точки
и
лежат на эллипсе. Система может оказаться несовместной.
(Надеюсь, что не сказал лажи)