我正在开发一种增强现实应用程序(目前)想要在表面上显示一个简单的立方体,并且能够在空间中移动(旋转和移位)以在所有不同角度观察立方体.校准相机的问题在这里不适用,因为我要求用户将iPhone放在他想要放置立方体的表面上,然后按下按钮以重置姿势.使用陀螺仪和核心运动来查找相机旋转非常简单.我是这样做的:
if (referenceAttitude != nil) {
[attitude multiplyByInverseOfAttitude:referenceAttitude];
}
CMRotationMatrix mat = attitude.rotationMatrix;
GLfloat rotMat[] = {
mat.m11, mat.m21, mat.m31, 0,
mat.m12, mat.m22, mat.m32, 0,
mat.m13, mat.m23, mat.m33, 0,
0, 0, 0, 1
};
glMultMatrixf(rotMat);
Run Code Online (Sandbox Code Playgroud)
这非常有效.当我试图在加速期间找到空间位移时,无论如何都会出现更多问题.带有Core Motion的Apple Teapot示例只是将加速度矢量的x,y和z值添加到位置矢量.这(除了没有多大意义)具有在加速之后将对象返回到原始位置的结果.(因为加速度从正到负,反之亦然).他们这样做了:
translation.x += userAcceleration.x;
translation.y += userAcceleration.y;
translation.z += userAcceleration.z;
Run Code Online (Sandbox Code Playgroud)
我应该怎么做才能找出某些加速度的加速度位移?(已知时差).看一些其他的答案,似乎我必须整合两次以从加速度获得速度,然后从速度获得位置.但是代码中没有任何例子,我认为这不是必要的.此外,还有一个问题是,当iPhone仍在飞机上时,加速度计值不为空(我认为有一些噪音).我应该过滤多少这些值?我应该过滤掉它们吗?
我正在学习使用iOS中的陀螺仪传感器编写应用程序.对于加速度计,是否存在类似于UIAcceleration/UIAccelerometer/UIAccelerometerDelegate的陀螺仪处理类?
伙计们,
我正在尝试获得如下图所示的实用程序.基本上,相机显示窗口覆盖设备屏幕的一部分,并且通过曲线或直线连接的点列表在相机视图上呈现为叠加.我知道这可以用石英绘制,但这不到我问题的一半.
真正的问题是,当轴承和高度发生变化时,叠加应该呈现不同的点.
例如:
我的问题在图片后面:

我正在研究核心运动类CMAttitude,它可以将设备的方向表示为3x3旋转矩阵.与此同时,我看了一下CATransform3D,其中包含了视图的态度以及缩放.这CATransform3D是一个4x4矩阵.
我已经看到OpenGL旋转矩阵是4x4,只是在第4行和第4列填充了0001.
如果CMAttitude的旋转矩阵与CATransform的矩阵相关,我就会徘徊?
我可以使用通过旋转矩阵获得的空间中的设备旋转来转换UIView CATransform3D吗?我的目的是让用户移动手机并将相同的变换应用到屏幕上的UIView.
额外问题:如果它们相关,我如何将CMAttitude的旋转矩阵转换为CATransform3D?
ios ×3
iphone ×3
gyroscope ×2
camera ×1
core-motion ×1
ios4 ×1
ipad ×1
matrix ×1
objective-c ×1
overlay ×1