繁体   English   中英

世界到屏幕坐标

[英]World to screen coordinates

我正在使用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)

问题是,如果我将标记居中而不是视图,我会随着计算的那些坐标移动,也会居中,当我移动标记时,视图向右移动但是它“移动得太快”所以它不会停留在标记上但在我移动标记的方向上用完了屏幕。

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

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

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

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 )一样处理,但正如你所说的方向是对的,我可能错了。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM