gpt4 book ai didi

ios - 世界到屏幕坐标

转载 作者:行者123 更新时间:2023-11-28 08:20:02 25 4
gpt4 key购买 nike

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

问题是,如果我将标记居中而不是 View 居中,我将使用计算出的那些坐标移动,它也居中,当我移动标记时, View 会向正确的方向移动,但它移动“太快”所以它没有停留在标记上,而是按照我移动标记的方向跑出屏幕。

编辑:这是我用来将 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) 一样处理,但正如您说方向是对的,我可能是错的。

关于ios - 世界到屏幕坐标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41596085/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com