【发布时间】:2017-05-26 13:14:01
【问题描述】:
我正在使用 wikiitude,我需要获取已识别标记的屏幕坐标。我已将 projectionViewMatrix 转换为 GLKMatrix4,并尝试了在多个站点上找到的这段代码:
let point = Point3D(x: m.m.12, y: m.m.13, z: m.m.14)//m is the matrix
let x = round(((CGFloat(point.x)+1)/2)*self.view.frame.width)
let y = round(((1-CGFloat(point.y))/2)*self.view.frame.height)
问题是,如果我将标记比视图居中,我正在移动计算的那些坐标,也是居中的,当我移动标记时,视图会朝正确的方向移动,但它移动“太快”所以它不会停留在标记上,而是朝我移动标记的方向跑出屏幕。
编辑: 这是我用来将指针维基度提供给我们的代码转换为 GLKMatrix4:
-(instancetype)initWithCArray:(const float *)pointer{
self = [super init];
if(self != nil){
glkMatrix = GLKMatrix4Identity;
memcpy(glkMatrix.m, pointer, 16*sizeof(float));
}
return self;
}
【问题讨论】:
-
请发布更多代码(创建 m)和更多关于您想要实现的 whar 的信息(什么标记;触摸事件?)。
-
我有一个处理矩阵的类。在 init 方法中,它需要一个 UnsafePointer
并且它有一个返回 GLKMatrix4 的 getMatrix() 方法。我不知道我在哪里找到它,因为它大约在一年前。我已经成功地在 seversl OpenGL/metal 和 wikiitude 项目中使用了该类。标记只是 wikiitude 识别的简单图像。我想让视图跟随屏幕上的标记,但这次我不能使用 OpenGL/metal,因为视图必须稍后与我的 UI 集成。 (动画并转换成一个窗口,包含ios ui 元素)没有触摸事件。 -
好的,我刚到我的电脑。添加了将维基百科提供给我们的指针转换为 GLKMatrix4 的代码
标签: ios swift wikitude projection-matrix