Graphics 如何将由4个点标识的任意平面投影到二维平面上?

Graphics 如何将由4个点标识的任意平面投影到二维平面上?,graphics,3d,geometry,projective-geometry,planerotation,Graphics,3d,Geometry,Projective Geometry,Planerotation,我们试图解决的问题是在平面的两种不同表示中定位一个点。旋转我们拥有的第一个平面以创建透视图;第二个是同一平面的二维视图。我们知道每个计划都有4分是相等的。问题是如果我们在平面1中有一个任意点,我们如何找到平面2中的对应点 为了最好地澄清这个问题,最好对用例进行说明。我们在左边有一幅插图 空间二维布局图 我们得到的是两张图片中的红色方块。注意,如果可能的话,我希望2D空间不一定是正方形。我们可以提前获得这些信息,并且已知这些信息。在第一张图中,我在飞机上也画了绿点。我希望能够将图1中的点投影

我们试图解决的问题是在平面的两种不同表示中定位一个点。旋转我们拥有的第一个平面以创建透视图;第二个是同一平面的二维视图。我们知道每个计划都有4分是相等的。问题是如果我们在平面1中有一个任意点,我们如何找到平面2中的对应点

为了最好地澄清这个问题,最好对用例进行说明。我们在左边有一幅插图

空间二维布局图

我们得到的是两张图片中的红色方块。注意,如果可能的话,我希望2D空间不一定是正方形。我们可以提前获得这些信息,并且已知这些信息。在第一张图中,我在飞机上也画了绿点。我希望能够将图1中的点投影到图2中的空间上


请注意,对于图像1,我没有定义的窗口或眼睛位置。我只知道图1中的红方是图2中红方的变换,图2在2D空间中。

这是在保留直线的四边形之间寻找映射的特例。这些通常称为同形变换或投影变换。在这里,其中一个四边形是正方形,所以这是一个流行的特例。你可以在谷歌上搜索这些术语(“quad-to-quad”,等等)来找到解释和代码,但这里有一些是给你的

保罗·赫克伯特著

数学不是特别令人愉快,但也不是那么难。您还可以从上面的链接中找到一些代码

更新


这是我的最爱之一:

如果你有(x,y,z)作为你的摄影点,这是可能的。。。或者,如果您假设某个z…如果您喜欢OpenCV,这个问题称为查找单应性(
cv::findhomography
)。完成后,第一幅图像中的任何点都将映射到第二个视图中,并在齐次坐标中应用
x'=Hx