我仍在为我的增强现实应用程序实现透视投影。我已经问过一些关于视口计算和其他相机东西的问题,这在这个线程中的 Aldream 中有解释
但是,目前我没有得到任何有用的价值,我认为这取决于我对笛卡尔坐标空间的计算。
我有一些不同的方法可以将纬度、经度和高度转换为笛卡尔坐标空间,但它们似乎都不能正常工作。目前我正在使用 ECEF(以地球为中心),但我也尝试了不同的计算,例如将半正弦公式和三角函数相结合(从两点之间的距离和方位角计算 x 和 y)。
所以我的问题是:
笛卡尔坐标空间如何影响我的透视投影?我必须在哪里“补偿”我的单位?(例如,当我使用米或厘米时)?
假设我使用的是 ECEF,而不是获得以米为单位的值,例如,我的相机位于(0,0,2m 高度),而我的点位于(10,10,0)。现在我可以轻松地使用维基百科上提到的功能,然后使用我的另一个线程中解释的 dx、dy、dz 的转换(如上所述)。我仍然没有得到:这个投影如何“知道”我在坐标系中的单位是什么?我认为这是我目前正在做的错误。我不处理坐标系的单位,因此无法从我的投影中获得任何好的价值。
当我使用以厘米为单位的坐标系时,我的透视投影的所有值都在增加。我必须在哪里“解决”这个单位问题?我是否必须将我的相机宽度和相机高度从像素“转换”为米?我必须将坐标系转换为像素吗?应该使用哪个坐标系来处理这种情况?我希望你能理解我的问题。
编辑:我自己解决了。 我已经将我的坐标系从 ecef 更改为自己的系统(使用 hasrsine 和轴承,然后计算 x、y、z),现在我得到了很好的值!:)