是否有正确/好的方法来将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/