QGraphicsScene,如何根据中心点放置项目

QGraphicsScene, how to place items based on center point

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

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

Range显然是距离中心点(或我的位置)的距离,方位角是从中心点的方向,0为北,180为南等。

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

这一切都需要能够随着 QGraphicsScene 的缩放状态进行缩放。

我完全迷失了这种转变。

不确定如何通过从坐标系转换到坐标系来获得正确的偏移量我设法找到了解决方案。希望它不会被认为是一项太多的黑客工作。

首先我需要从左上角偏移 (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;

}