对不起,我的英语不好.我有以下问题:

让我们说我的移动设备的相机正在显示这张照片.
在图片中,您可以看到4个不同的位置.我知道每个位置(经度,纬度).
现在我想知道,图中的具体位置在哪里.例如,我想在前面20米处和我左边5米处有一个矩形.我只知道这一点的纬度/经度,但我不知道,我必须把它放在图片的内部(x,y).例如,在我看来,POS3位于(0,400).POS4为(600,400),依此类推.
我必须在哪里放置新点,前面20米,左边5米?(所以我的输入是:(LatXY,LonXY),我的结果应该是(x,y)在屏幕上)
我还得到了摄像机的高度以及摄像机的x,y和z轴的角度.
我可以使用简单的数学运算来解决这个问题吗?
非常感谢你!
android coordinate-systems augmented-reality coordinate-transformation android-camera
我一直在尝试使用方形纹理渲染GL_QUAD(形状为梯形).我想尝试使用OpenGL来解决这个问题.现在纹理变得严重扭曲,这真的很烦人.
通常情况下,我会加载纹理计算单应性,但这意味着大量的工作和额外的线性编程库/直接线性变换函数.我的印象是OpenGL可以为我简化这个过程.
我环顾网络,看过"透视 - 正确纹理,Q坐标和GLSL"和"OpenGL中的倾斜/剪切纹理映射".
这些似乎都假设你会做某种类型的单应性计算或使用OpenGL的某些部分我不知道......任何建议?
更新:
我一直在阅读"使用图像空间简化和变形导航静态环境" [ PDF ] - 第9页附录A.
看起来他们通过将(s,t,r,q)纹理坐标与模型的世界空间z分量的顶点相乘来禁用透视校正.
因此对于给定形状为梯形的四边形的给定纹理坐标(s,r,t,q),其中4个分量是:
(0.0f, 0.0f, 0.0f, 1.0f),
(0.0f, 1.0f, 0.0f, 1.0f),
(1.0f, 1.0f, 0.0f, 1.0f),
(1.0f, 0.0f, 0.0f, 1.0f)
Run Code Online (Sandbox Code Playgroud)
这和glTexCoord4f(s vert.z,r vert.z,t,q*vert.z)一样简单吗?或者我错过了一些步骤?喜欢弄乱GL_TEXTURE glMatrixMode?
更新#2:
这就是诀窍!记住这一点,这个问题遍布整个网络,并没有任何简单的答案.大多数涉及直接重新计算纹理与原始形状和变换形状之间的单应性...也就是大量的线性代数和外部BLAS lib依赖.