世界到屏幕坐标

时间:2017-01-11 16:37:29

标签: ios swift wikitude projection-matrix

我使用wikitude,我需要获取识别标记的屏幕坐标。我已将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)

问题在于,如果我将标记置于视图中心,我移动计算的坐标,也会居中,当我移动标记时,视图会向右移动,但它正在移动&#34太快"所以它不会留在标记上,而是在我移动标记的方向上跑出屏幕。

修改 这是我用来转换指针的代码wikitude为我们提供了GLKMatrix4:

-(instancetype)initWithCArray:(const float *)pointer{
    self = [super init];
    if(self != nil){
        glkMatrix = GLKMatrix4Identity;
        memcpy(glkMatrix.m, pointer, 16*sizeof(float));
    }
    return self;
}

1 个答案:

答案 0 :(得分:0)

如果没有测试,我不明白为什么你想要回合并怀疑这是问题的根源。删除舍入:

let x = CGFloat(((point.x + 1.0) / 2.0)) * self.view.frame.width
let y = CGFloat(((1.0 - point.y) / 2.0)) * self.view.frame.height

此外,我认为y应该像x...point.y + 1.0)一样处理,但正如你所说的方向是对的,我可能错了。