gpt4 book ai didi

c++ - 为什么没有 QTransform::fromRotate?

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:21:14 27 4
gpt4 key购买 nike

Qt 的 QTransform 提供了一些更优化的方法来使用这些静态方法构建平移/缩放的 QTransform 矩阵:

现在我需要一个旋转变换,我认为如果还有一个 QTransform::fromRotate 会更好。但是这个不存在。

在我的例子中,我根据鼠标交互(如平移、缩放和旋转)修改现有变换。

void MapDrawingItem::wheelEvent(QWheelEvent* event)
{
//Moving the hovered point to the top left point on screen
m_view_transform *= QTransform::fromTranslate(-event->posF().x(), -event->posF().y());

//Apply transformations accordingly
if((event->modifiers() & Qt::ControlModifier) == Qt::ControlModifier)
m_view_transform *= QTransform().rotate(event->delta() / 30.);
else
{
auto factor = qPow(1.001, event->delta());
m_view_transform *= QTransform::fromScale(factor, factor);
}

//Move the hovered point back to the mouse cursor
m_view_transform *= QTransform::fromTranslate(event->posF().x(), event->posF().y());

emit signalViewTransformChanged(m_view_transform);
update();
}

代码工作正常,但我想用 QTransform::fromRotate(...) 替换 QTransform().rotate(...)

为什么这个方法不存在?我无法想象 Qt 开发人员会忘记这个。有什么使这不可能的吗?

最佳答案

最可能的原因是创建和使用静态函数来创建旋转变换强制始终链接数学库(对于 sin(3)cos(3 ) 数学函数) 因此您可以使用特定的构造函数并自己使用它们。

顺便说一下,您可以使用其中一个构造函数来指定用于矩阵元素的常量。在使用转换库时,保存矩阵以供重用的做法并不常见。

关于c++ - 为什么没有 QTransform::fromRotate?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45434610/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com