Я разрабатываю синтаксический анализатор 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 градусов).
Как правильно рассчитать угол поворота?
Вы игнорируете перевод эллипса, то есть, что центр не может быть помещен в (0, 0). Если это так, то ваше решение будет в порядке.
Чтобы отменить эффект перевода, просто вычтите координаты центра:
auto angle = std::atan2(ellipse.my - ellipse.cy, ellipse.mx - ellipse.cx);