- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
尝试重写为 Myo 编写的 Objective-C 代码我遇到了 GLKQuaternion 类,它是一个联合并且在 Swift 中似乎不受支持(Using GLKMath from GLKit in Swift)。
我正在寻找的是一个解决方法来让它工作。也许是在 ObjectiveC 中完成的带有 Math 的混合应用程序,因此我可以访问这些属性。我有哪些选择?
最佳答案
最后使用了一个桥接文件并创建了一个小的包装层,以允许我从 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/
尝试重写为 Myo 编写的 Objective-C 代码我遇到了 GLKQuaternion 类,它是一个联合并且在 Swift 中似乎不受支持(Using GLKMath from GLKit in
我有一个 GLKViewController 来处理一些 OpenGL 绘图。我实现了 glkView:drawInRect 和 update 方法,并将 preferredFramesPerSeco
根据关于 GLKViewController 的示例,我实现了如下更新回调 - (void)update { } 但是我查了下源码,好像没有定义update message,为什么我可以使用updat
我一直试图解决这个问题,但没有成功。我创建了一个 Storyboard,它在 GLK View Controller 中嵌入了一个 GLKView(我无法发布图像,因为我还没有足够的声望点)。我似乎无
我正在使用适用于 iPhone 的 GLKit 开发一个 OpenGL 项目,需要一次绘制多个不同的对象并独立旋转和平移它们。我见过的几乎每个 GLKit 示例都将顶点/颜色/纹理数据放置在渲染类(通
我是一名优秀的程序员,十分优秀!