我认为这个问题会产生一组可能的解决方案,至少在 2D 中是这样。对于 2D 案例:
|
-----------+-----------
/|\
/ | \
/ | \
/---+---\VP
/ | \
/ | \
/ | \
/ | \
/ | -- \
/ | | \
/ | | \
在上图中,垂直线段和水平线段将投影到视图平面 (VP) 上的同一条线上。如果你把它按比例画出来,你会看到有两条来自眼睛的光线穿过未投影线的每个端点。这条线可以在许多位置和旋转 - 想象一下将一根棍子放入圆锥体中,它可能会卡在任意数量的位置。
因此,在二维空间中,定义明确的集合中有无限数量的解。
这适用于 3D 吗?
该算法将遵循以下路线:
- 反转投影矩阵
- 计算通过矩形顶点的四条射线,有效地创建一个倾斜的金字塔
- 尝试将您的矩形放入金字塔中。这是一个棘手的问题,我试图在脑海中想象金字塔中的矩形,看看它们是否能以多种方式适应。
编辑:如果你知道到物体的距离,它就会变得微不足道。
编辑 V2:
OK,令Rn为世界空间中的四条射线,即通过逆矩阵变换,用m.Rn表示,其中|Rn| 是一个。因此,矩形的四个点是:
P1 = aR1
P2 = bR2
P3 = cR3
P4 = dR4
其中 P1..P4 是矩形圆周周围的点。由此,使用一点向量数学,我们可以推导出四个方程:
|aR1 - bR2| = d1
|cR3 - dR4| = d1
|aR1 - cR3| = d2
|bR2 - dR4| = d2
其中 d1 和 d2 是矩形边的长度,a、b、c 和 d 是未知数。
现在,可能无法解决上述问题,在这种情况下,您需要将 d1 与 d2 交换。您可以将每一行展开为:
(a.R1x - b.R2x) 2 + (a.R1y - b.R2y) 2 + (a.R1z - b.R2z) 2 = d1 2
R1在哪里?和R2?是光线 1 和 2 的 x/y/z 分量。请注意,您在上面求解的是 a 和 b,而不是 x,y,z。