2016-10-12 16 views
2

私は、円弧を編集している図形エディタの機能に取り組んでいます。QPainterPath :: arcToは、図形が楕円形のときに期待どおりに動作しません。それは円のときに期待どおりに動作します。QPainterPath :: arcToの角度はどのように解釈されますか?

次の2つの画像は結果を示しています。最初のケースでは、私は円を作成しました。次に、最初の開始角度が45、スパン角度が270の円に変換します。シーン座標スペースは正方形です。対角線は45度です。予想どおり、円弧の終点はちょうど対角線上にあります。

2番目のケースでは、楕円があり、楕円は45度と270度の角度でまったく同じ方法で弧に変換されます。弧の端点はもはや対角線上にはなくなります。これは私が期待するものではありません。両方の場合において

、描画コードは次のとおり

painter.arcTo (rect, 45, 270); 

ゼロ度は3時の位置にあり、そしてIは、指定された角度は、その中心点からの線の間で測定されたと考えられていました弧の端の点まで移動します。 QPainter :: arcToの説明ではわかりませんが、これは文書化されていないようです。

これは、円弧の形状を変更するコードを記述しているため、現在のマウスの位置と包囲する矩形の中心点であるため、背景を操作できる必要があるため問題です。今、私が弧を作り直すとき、私が計算している角度は0,90,180,270でのみ正確です。私が45度の角度に近づくほど、私の角度から離れています。

QLineF (rect.center(), mouse_pos).angle(); 

は再び、円のために、これは完璧に動作します:

は私がして、その角度を取得しています。非円形の楕円の場合は、そうではありません。

これを書いた後、私はこれがbeautiful illustrationで、これは私が扱っていることを正確に示しています。残念ながら、Postscriptのソリューションは私にとって役に立たない。私は正しい角度を計算するために何をすべきかを知る必要があります。

Circular arc with start angle of 45 and span angle of 270

Elliptical arc with start angle of 45 and span angle of 270

答えて

0

私は私の答えhereを見つけました。私が期待したように、角度についての私の理解は間違っていました。私のマウスのトラッキングを実行して弧を変形させるには、線分と楕円との交点を見つけ、パラメトリック楕円方程式から逆の角度で正しい角度を見つける必要があります。

関連する問題