0

我正在将我的代码从 Python 3 移植到 Qt 5.7.

在 Python 中,为了更好地理解,我手动完成了所有数学运算。现在我将我的算法移植到 Qt C++ 中,我希望 Qt 至少提供基本的东西(除了交叉和点积之外),当涉及到矢量时,例如旋转矢量的能力,翻译它等。从我所看到的东西缺乏......很多。

有些QMatrix4x4似乎已被弃用(我只能在 Qt 4.8 的文档中找到一些东西)。我在旋转中发现的唯一东西是QTransform::rotate(...)。但是,这是用于旋转坐标系。虽然在数学上我可以使我的算法适应这种做事方式,但我仍然更愿意遵循关于围绕任意点旋转的约定,该点被转换为原点旋转并最终反转平移

我是否遗漏了某些东西,或者这真的不可用QVector2D(我也检查QVector3D过,因为可以轻松地将 2D 转换为 3D 向量(如果您想使用该函数进行叉积:D,那么顺便说一句是必要的))?

注意:这里不能选择使用 QML。一切都只需要 C++。

4

1 回答 1

0

在几何方面,Qt 库中似乎有相当多的重复。对于这种情况,您可以使用QTransformand QPointF

QPointF pivot = ...;
float rotationInDegrees = ...;
QTransform rotationAroundPivot = QTransform()
    .translate(-pivot.x(), -pivot.y());
    .rotate(rotationInDegrees);
    .translate(pivot.x(), pivot.y());
QPointF rotatedPoint = rotationAroundPivot.map(point);
于 2020-03-03T08:49:55.717 回答