为pARk示例代码添加高程

时间:2014-08-01 21:23:10

标签: ios objective-c augmented-reality

我试图添加pARk示例代码的高度,因此标签出现在感兴趣的地方的顶部附近。

我做的第一件事是向altitude添加PlaceOfInterest.h属性并将其填充到ViewController上,每个poi的高度以米为单位。

然后,在ARView上,进行了以下更改:

  • 将高度添加到LLA到ECEF转换设备的位置:latLonToEcef(location.coordinate.latitude, location.coordinate.longitude, location.altitude, &myX, &myY, &myZ);
  • 同样适用于poi的位置latLonToEcef(poi.location.coordinate.latitude, poi.location.coordinate.longitude, poi.location.altitude, &poiX, &poiY, &poiZ);
  • 向placesOfInterestCoordinates 4D vector placesOfInterestCoordinates[i][2] = (float)u;
  • 添加了向上方向

我以为就是这样,非常容易。运行项目和...标签埋在地板上。比较应用程序上poi的标签位置,无论上面是否有我的更改,它们几乎都在相同的位置,即使添加高度,转换到ECEF和ENU的值也应该改变一点。

在查看有关Perspective projection的代码,所有使用的矩阵,ECEF,ENU等之前,我几乎没有什么知识。我一直在阅读维基百科中的所有这些概念,以便能够理解代码,以及在此处阅读与此示例代码相关的其他问题 Use of maths in the Apple pARk sample code  以及Android的类似问题...但仍然无法弄清楚为什么高度不会在屏幕上显示。

我尝试将poi的高度乘以5 latLonToEcef(location.coordinate.latitude, location.coordinate.longitude, 5*location.altitude, &myX, &myY, &myZ);,看看poi的y位置是否有明显的变化。并且,虽然有一些,但它非常小,标签仍然远离真正的高度。

所以如果有人能给我一些关于我缺少什么的提示,为什么海拔高度没有显示在屏幕上,我会非常感激。

我将我的尝试上传到https://github.com/Tovkal/pARk-with-altitude存储库,以防您希望查看包含更改的代码。如果你运行它,你应该将感兴趣的地方从ViewController更改为你附近的一些。

谢谢!

0 个答案:

没有答案