小编eug*_*alo的帖子

使用Core Motion获取加速度计数据的位移

我正在开发一种增强现实应用程序(目前)想要在表面上显示一个简单的立方体,并且能够在空间中移动(旋转和移位)以在所有不同角度观察立方体.校准相机的问题在这里不适用,因为我要求用户将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仍在飞机上时,加速度计值不为空(我认为有一些噪音).我应该过滤多少这些值?我应该过滤掉它们吗?

iphone accelerometer augmented-reality ios4 gyroscope

19
推荐指数
3
解决办法
2万
查看次数

如果未通过动画删除控制器,UIKit不会释放控制器吗?

在基于标签栏的应用程序中,如果我在一个选项卡中将一个控制器推入导航堆栈中,然后当另一个选项卡处于活动状态时,我尝试弹出该控制器,除非我弹出没有动画,否则它不会被释放.

这有效:

[navigationController popToRootViewControllerAnimated:NO];
Run Code Online (Sandbox Code Playgroud)

而这不是:

[navigationController popToRootViewControllerAnimated:YES];
Run Code Online (Sandbox Code Playgroud)

有没有人知道这里发生了什么?是animated使用不当的参数?

更新:

Apple告诉我,这确实是UIKit中的一个错误,他们认为它很紧急,并指定了一些人.它可能已在最新版本中得到解决,但我没有时间检查.

iphone objective-c uitabbarcontroller uinavigationcontroller

6
推荐指数
1
解决办法
1494
查看次数

Class怎么可以是Class类而没有Class实例方法?

我正在研究如何实现Ruby解释器,并且发生了一个问题,但我还没有得到答案.这是标题中的那个:因为Class(r_cClass)已经super设置为自身(忽略元类,因为实际上super是元类r_cClass),如果我向Class对象发送一个方法,这将在Class'类的方法表中查找.但是Class'类是Class,所以我最终不应该查看实例方法Class?但事实并非如此,因为在文档Class类中,方法和Class实例方法是分开的.在search_methodeval.c红宝石,我没有找到任何的专项检查Class类.任何人都可以对此有所了解吗?

ruby methods metaclass class internals

6
推荐指数
1
解决办法
145
查看次数

验证Rails中的多态关联类型

我正在开发一个控制器,它创建一个具有多态belongs_to关联的模型.我现在要做的是找到它所属的模型如下:

 def find_polymorphic_model(classes)
   classes_names = classes.map { |c| c.name.underscore + '_id' }

   params.select { |k, v| classes_names.include?(k) }.each do |name, value|
     if name =~ /(.+)_id$/
       return $1.classify.constantize.find(value)
     end
   end

  raise InvalidPolymorphicType
end
Run Code Online (Sandbox Code Playgroud)

其中classes是关联的有效类型数组.

这种方法的问题是我必须在控制器中记住我正在创建的模型允许哪些类型.

有没有办法找到某个多态的belongs_to关联允许哪些类型?或者我可能做错了,我不应该让多态控制器暴露而不将它嵌套在多态资源中(在路由器中)?

我也认为Rails延迟加载类可能存在问题,所以为了能够找到这个东西,我必须在初始化时显式加载所有模型.

validation activerecord ruby-on-rails polymorphic-associations mongoid

2
推荐指数
1
解决办法
2635
查看次数