2

dxflibライブラリを使用して DXF パーサーを開発しています。楕円の解析に問題があります。

楕円を解析すると、次のデータを受け取ります。

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

1 に答える 1

4

楕円の平行移動を無視しています。つまり、中心が (0, 0) に配置されていない可能性があります。その場合、解決策は問題ありません。

移動の効果を元に戻すには、中心の座標を差し引くだけです。

auto angle = std::atan2(ellipse.my - ellipse.cy, ellipse.mx - ellipse.cx);
于 2015-06-30T09:24:10.223 に答える