QGraphicsScene,如何根据中心点放置物品

时间:2016-11-10 15:37:48

标签: c++ qt qgraphicsview qgraphicsscene

我有一个QGraphicsScene,我确定了我的中心点,但我现在需要弄清楚如何根据这些信息将我的项目放在场景中。

我需要处理2个数据:范围和方位。

范围显然是距离中心点(或我的位置)有多远,而轴承是从中心点开始的方向,0表示北,180表示南方,依此类推。

因此,例如,如果我需要将项目放置在范围:20,方位:90,项目将直接位于中心点右侧20(单位)。目前,使用此数据放置项目时,它基于场景的左上角0,0。

这一切都需要能够与QGraphicsScene的缩放状态一起缩放。

我完全迷失在这次转换中。

1 个答案:

答案 0 :(得分: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;

}