2016-11-10 3 views
1

私はQGraphicsSceneを持っていますが、中心点がどこにあるのかを判断しましたが、その情報に基づいてアイテムをシーンに配置する方法を理解する必要があります。QGraphicsScene、中心点に基づいてアイテムを配置する方法

私は、作業が必要な2つのデータを持っています:レンジとベアリング。

範囲は明らかに中心点(または私の位置)からどのくらい離れており、軸受は中心点からの方向であり、0は北、180は南などです。

たとえば、範囲:20、ベアリング:90にアイテムを配置する必要がある場合、アイテムは中心点のすぐ右に20(単位)になります。現在、このデータで項目を配置するのは、シーンの左上にある0,0に基づいています。

このすべては、QGraphicsSceneのズーム状態でも拡大縮小できる必要があります。

この変換では完全に失われています。

答えて

1

座標系から座標系への変換で正しいオフセットを得る方法がわかりません解決策を見つけることができました。うまくいけば、それはあまりにも多くのハックの仕事とはみなされません。

まず、左上(0,0)からオフセットし、私のシーンが360、容易だった360であることを知る必要がありました。

数学者ではありませんが、私は角度を知ることができませんでしたが、いくつかの研究の後、私が持っていた情報はベクトルを導き出すために必要なものであることがわかりました。

私のQGraphicsSceneで項目を生成するのに役立つ方法は次のとおりです。

QPointF Mainwindow::pointLocation(double bearing, double range){ 
    int offset = 90; //used to offset Cartesian system 
    double centerX = 180;//push my center location out to halfway point 
    double centerY = 180; 
    double newX = centerX + qCos(qDegreesToRadians(bearing - offset)) * range; 
    double newY = centerY + qSin(qDegreesToRadians(bearing - offset)) * range; 
    QPointF newPoint = QPointF(newX, newY); 
    return newPoint; 

} 
関連する問題