问题描述
我正在尝试将(经度/纬度)位置转换为手机屏幕上的矩形。但是现在让我们假设它们是 Oxy 平面上的法线点。
假设相机位于 (X,Y)
点,对应于手机屏幕的中心。它指向 (vx,vy)
方向,具有 60 度视锥(顺时针 30 度和逆时针 30 度)。相机方向可以自由旋转,所以vx,vy in [-1 -> 1]
。
有一个 N
点 (x[],y[])
的列表,每个点代表一个位置。
在每一步,视野内的所有点都被选中,称它们为 (px[],py[])
。这一步是simple。接下来,我需要在手机屏幕上绘制 (px[],py[])
。最大的问题是当相机+两点共线时。我对如何处理这个问题一无所知。编辑:两个点都必须显示在屏幕上,所以可能会添加一些随机偏移量?
给定相机位置、相机观察方向和点 px[i],py[i]
,它在屏幕上的像素坐标是多少?如果没有足够的信息,那么任何可以处理共线情况的方法都可以。
编辑:
图 1 显示了一个示例。给定点 + 相机位置/方向,点 1,2,3,4 在视觉中。然后,它们显示在屏幕上,如图 2 所示。
2D 的可能解决方案(屏幕上没有 3D 的错觉):
-
水平位置:使用与摄像机方向的角度来确定其是否在屏幕的左侧/右侧。使用最大角度对角度进行归一化。归一化角度 (0->1) 用于确定该点向左/向右的距离,其中
normAngle = 0
表示位于屏幕中间,normAngle = 1
表示位于最左侧/屏幕最右边的像素。 -
垂直位置:与上述相同,但使用与相机的归一化距离,而不是与相机方向的角度。
有没有更好的方法?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)