swift - Swift 中的 GLK 四元数

标签 swift glkit myo

尝试重写为 Myo 编写的 Objective-C 代码我遇到了 GLKQuaternion 类,它是一个联合,并且似乎在 Swift 中不受支持( Using GLKMath from GLKit in Swift )。

我正在寻找一种解决方法来使其发挥作用。也许是一个混合应用程序,数学是在 ObjectiveC 中完成的,这样我就可以访问这些属性。我有什么选择?

最佳答案

最终使用了一个桥接文件并创建了一个小的包装层,以允许我从 Swift 访问我想要的数据。我将其称为“polyfill”,类似于我们在网络上增强旧浏览器功能的东西。

code is available on github 。特别是this commit将会引起人们的兴趣,因为它显示了需要做什么。

Polyfill.h

@interface OrientationData: NSObject
  @property (nonatomic) TLMAngle *pitch;
  @property (nonatomic) TLMAngle *yaw;
  @property (nonatomic) TLMAngle *roll;
@end

@implementation OrientationData
@end

@interface GLKitPolyfill: NSObject
+ (OrientationData *) getOrientation:(TLMOrientationEvent *)orientationEvent;
@end

Polyfill.m

+ (OrientationData *) getOrientation:(TLMOrientationEvent *)orientationEvent {
  TLMEulerAngles *angles = [TLMEulerAngles anglesWithQuaternion:orientationEvent.quaternion];

  OrientationData *result = [OrientationData new];
  result.pitch = angles.pitch;
  result.yaw = angles.yaw;
  result.roll = angles.roll;

  return result;
}

ViewController.swift

let angles = GLKitPolyfill.getOrientation(orientationEvent)
let pitch = CGFloat(angles.pitch.radians)
let yaw = CGFloat(angles.yaw.radians)
let roll = CGFloat(angles.roll.radians)

Apples Mix & Match guide提供了关于如何使 Obj-C 与 Swift 一起工作的好技巧,反之亦然。

关于swift - Swift 中的 GLK 四元数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26571371/

相关文章:

iOS OpenGL ES 屏幕旋转,同时后台应用栏可见

ios - GLKit的-drawRect : is not called during screen rotation

ios - OpenGL GLKit : rendering different size vertices objects together. ios opengl 绘制调用超出数组缓冲区边界

ios - 在 String 中的特定字符串的字符串末尾添加一个字符串

swift - 打印的double值与原来设置的值不同

arrays - Swift 2 中通过索引比较数组

javascript - 收集一段时间内的肌电图数据。推荐JS?

java - 在 Android 上初始化 Myo hub 时出现不满意的链接错误

ios - 设置线帽样式不起作用 UIBezierPath