Найти угол поворота эллипса

Я разрабатываю синтаксический анализатор DXF, используя dxflib библиотека. У меня проблема с разбором эллипсов.

Когда я анализирую эллипс, я получаю следующие данные:

struct DL_EllipseData
{
/*! X Coordinate of center point. */
double cx;
/*! Y Coordinate of center point. */
double cy;

/*! X coordinate of the endpoint of the major axis. */
double mx;
/*! Y coordinate of the endpoint of the major axis. */
double my;

/*! Ratio of minor axis to major axis. */
double ratio;
};

Я пытаюсь вычислить угол, используя следующее уравнение:

auto angle = std::atan2(ellipse.my, ellipse.mx);

Но это дает мне неверные результаты (например, если угол составляет 16 градусов, он дает мне около 74 градусов).

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

2

Решение

Вы игнорируете перевод эллипса, то есть, что центр не может быть помещен в (0, 0). Если это так, то ваше решение будет в порядке.

Чтобы отменить эффект перевода, просто вычтите координаты центра:

auto angle = std::atan2(ellipse.my - ellipse.cy, ellipse.mx - ellipse.cx);
4

Другие решения


По вопросам рекламы ammmcru@yandex.ru
Adblock
detector