我有一个应用程序,可以在图像/照片的顶部定义一个现实世界的矩形,当然在2D中它可能不是矩形,因为您是从一个角度看的。
问题是,说矩形需要在上面绘制网格线,例如,如果矩形是3x5,那么我需要从侧面1到侧面3绘制2条线,从侧面2到侧面4绘制4条线。
截至目前,我将每条线分成等距的部分,以获取所有网格线的起点和终点。但是,矩形的角度越大,这些线就越“不正确”,因为距离您越远的水平线应该越靠近。
有人知道我应该搜索的算法的名称吗?
是的,我知道您可以在3D模式下执行此操作,但是对于该特定应用程序,我仅限于2D模式。
这是解决方案。
基本思想是,您可以通过对角线连接角找到矩形的正确透视“中心”。两条结果线的交点是透视正确的中心。从那里将矩形细分为四个较小的矩形,然后重复此过程。次数取决于您想要的精度。您可以细分到像素大小以下,以获得有效的完美视角。
然后,在子矩形中,仅应用标准的未校正“纹理”三角形,矩形或任何其他形状。
您无需执行构建“真实” 3d世界的复杂麻烦即可执行此算法。如果您 确实 有一个真实的3D世界模型,但是您的textriangles不能在硬件中进行透视校正,或者您需要一种高性能的方法来获得透视正确的平面,而又不会出现逐像素渲染的技巧,这也非常有用。