- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我需要实现与 CMAttitude iOS 类中的 multiplyByInverseOfAttitude 使用的行为相同的行为。请注意,我不能直接使用它,但我有正确的 CMAttitude 对象。谁能指出我正确的方向?
最佳答案
由于不允许您自己创建 CMAttitude 的实例,唯一的方法是创建一个新的四元数并将其用于任何进一步的计算。我建议使用您自己定制的四元数类而不是简单的结构 CMQuaternion .一个好的起点是 cocoamath您可以从 trunk 获取 Quaternion.m、Quaternion.h 和 QuaternionOperations.m 的项目我将在这个示例代码中使用它。
首先你必须从 complex conjugate 中保存一个实例您的引用四元数(取自CMAttitude.quaternion
)用于所有后续乘法,即
我的类.h
Quaternion* inverseReferenceQuaternion;
我的类.c
// initialising code run only once after each call to [motionManager startDeviceMotionUpdates];
CMAttitude firstAttitude = [motionManager deviceMotion].attitude;
CMQuaternion q = firstAttitude.quaternion;
inverseReferenceQuaternion = [[Quaternion alloc] initWithRe:q.w i:-q.x j:-q.y k:-q.z];
在您的计时器循环(或处理程序 block )中,您需要一个 quaternion multiplication :
// on every update
CMAttitude attitude = [motionManager deviceMotion].attitude;
CMQuaternion current = attitude.quaternion;
Quaternion currentMultiplied = initAsProductOf:inverseReferenceQuaternion And:current
现在 currentMultiplied
应该包含您要查找的内容。
如果您是这个主题的新手,四元数很漂亮,但是值得阅读一些教程,例如 OpenGL:Tutorials:Using Quaternions to represent rotation或 Quaternion Powers .
关于ios - multiplyByInverseOfAttitude (CMAttitude Class ) 是如何实现的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14482518/
我目前正在使用 CoreMotion 的 DeviceMotion 来获取 iPhone 的方向(滚动、俯仰、偏航)。现在我想要相对于地理北极的这些值;因此,我需要一个包含滚动、俯仰和偏航值的 CMA
我遇到一个问题。我想将 iPhone 的 CMAttitude 信息转换为海拔高度(0 到 90 度)和方位角(0 到 360 度)。我用谷歌搜索并找到了一些讨论它的线程,但没有一个线程给出了肯定的答
我需要实现与 CMAttitude iOS 类中的 multiplyByInverseOfAttitude 使用的行为相同的行为。请注意,我不能直接使用它,但我有正确的 CMAttitude 对象。谁
我正在查看核心运动类 CMAttitude,它可以将设备的方向表示为 3x3 旋转矩阵。同时,我查看了 CATransform3D,它封装了 View 的姿态以及缩放。 CATransform3D 是
我想知道如何使用 Core Motion 获得 iPhone 相对于基本方向的方向。我认为最好的方法是使用设备相对于磁力计给出的磁场的姿态。从 apple 文档中,它将态度描述为: CMAttitud
假设设备方向可能不断变化,我正在尝试隔离垂直或水平加速度分量。 在拥有陀螺仪数据和 CMAttitude 之前,这是不可能的,因为我们只有加速度数据。现在我们有两个加速度是 userAccelerat
我想获得一个基于地平面的引用 CMAttitude,例如,绘制地平线。 实际上,我可以通过随时获取引用姿态来旋转我的 View ,并使用 multiplyByInverseOfAttitude 获取与
我是一名优秀的程序员,十分优秀!