2016-11-10 38 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; 

}