2015-06-30 7 views
2

Я разрабатываю парсер 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 градусов).

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

ответ

4

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

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

auto angle = std::atan2(ellipse.my - ellipse.cy, ellipse.mx - ellipse.cx); 
Смежные вопросы