是否有正确/好的方法来将QGyroscopeReading转换为 Qt5 中的QVector3D
QGyroscopeReading将其 x z 值存储为qreal,而QVector3D使用float

由于不能保证qreal是浮点型的(它的类型是在Qt构建时指定的),因此无警告的天真转换看起来非常丑陋:

QGyroscopeReading gr;
QVector3D myVec(static_cast<float>(gr.x())
  , static_cast<float>(gr.y())
  , static_cast<float>(gr.z()));

当然有更好的东西了吗?

最佳答案

来自Qt doc。 QGyroscopeReading Class:

因此,将qreal转换为float是您的最小问题,除了您只想将值存储在QVector3D中(请记住,这并不代表3D空间中的点或 vector )。但是,如果是这种情况,那么您的转换就可以了。 (尽管,我不明白为什么不将陀螺仪读数存储为QGyroscopeReading。)
如果您想将QGyroscodeReading应用于QVector3D(例如以显示效果),则可以将旋转值应用于预定义的 vector (例如QVector3D(0, 0, 1))。对于累积更新,时间也将是必需的(将角速度转换为 Angular )。
对于该时间, QGyroscopeReading::timestamp() 可能很有趣(即从当前时间戳和上一个时间戳确定持续时间)。虽然,医生。不是很令人鼓舞:

关于c++ - 将QGyroscopeReading转换为QVector3D的正确方法是什么?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/52030285/

10-10 07:37