我在这里有一个思考和搜索问题,找不到看起来的良好方向...... 我希望通过使用设备运动,开发一种算法来在360图像(SPEID)中移动。

因此,如果用户指向他面前的设备,他会得到所确定的图像的起源点。当他向他周围移动设备时,全景图像按照它移动。

我可以调查的任何想法或源?

谢谢,祝你们幸福快乐:)

有帮助吗?

解决方案

我看到两种简单的方法来实现这一点,没有太多的数学麻烦:

  1. 使用euler角度,即 Cmattitude
  2. gimbal lock 当用户开始以混沌方式移动他们的设备时。
  3. 相同适用于关于完整3D视图的可扩展性。
  4. 使用 cmdevicemotion
  5. 磁场并不总是可用的或往往是卑鄙的不精确。
  6. 将其扩展到3d视图可能是一个麻烦。
  7. 这两种方法都应该很容易实现,因此我将从其中一个开始。如果你想要拥有更复杂的解决方案,你需要深入了解数学。在这种情况下,PPossible解决方案可以是使用当前设备普通的。例如查找普通向量到iOS设备),将其投影到地球表面平面上并为圆柱形全景带来角度的达景。

    在这种情况下,球体投影甚至更容易,因为您可以直接使用Nomal Vector。

其他提示

感谢Kay,我可以在正确的轨道上实现这种效果。

我正在制作这个答案,只是为了为那些寻找同样的事情提供更多细节。

首先,您需要创建一个cmmotionManager对象。

然后使用startdevicemotionupdateStoqueue来处理运动事件。

[self.motionManager startDeviceMotionUpdatesToQueue:[NSOperationQueue currentQueue] withHandler:^(CMDeviceMotion *motion, NSError *error) {
    [self processMotion];
}];
.

在流程中,您只需要基于前一个:

获得态度:

// Get attitude difference with previous one
CMAttitude *currentAttitude = self.motionManager.deviceMotion.attitude;
[currentAttitude multiplyByInverseOfAttitude:self.referenceAttitude];
.

感谢您,您知道自上次更新以来用户所做的新角度。 然后在您处理视图的位置,您将新的欧拉角转换为移动图像所需的像素量。 只需谨慎的欧拉角度在-180,180之间变化,并在Apple中给出。这可能是方便:

#define RADIANS_TO_DEGREES(radians) ((radians) * (180.0 / M_PI))
.

所以在我的情况下,我只是计算新的x偏移,因为我只是在x轴上移动。

希望这有帮助。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top