我有一个3D建模问题,这与XNA这样的3D框架无关。换句话说,我必须自己运行计算(尽管使用一些框架功能也可以)。
我有一组N个三维点,让我们称它们为p1 to pN。虽然这些点是未知的,但当相机具有由单位向量U1描述的方向时,我知道它们的投影2D位置(pp1到ppN)。
当相机方向不同时,我如何找出这些点的投影,就像不同的向量U2所描述的那样?
如有任何帮助,我们将非常感谢:)
谢谢
发布于 2009-09-07 17:27:14
你不能。当您只知道相机的位置和方向以及点的投影时,您不知道该点的实际位置-它可以是从相机通过投影平面到无穷远的直线上的任何位置。因此,你甚至无法分辨(在一般情况下)该点是否对处于不同位置和方向的相机可见。
但是,如果你对这些点有所了解--例如,它们形成了一个已知大小的立方体--你就可以利用这些知识和这些点的投影来计算点的位置,进而找到这些点在其他相机位置和方向上的投影。
发布于 2009-09-07 17:45:15
我可能完全错了,因为我已经很长时间没有接触3D数学或矩阵了。
基于http://www.songho.ca/opengl/gl_transform.html。
公式:
D * M * P * W * V = S
Data * Model * Perspective * W * Viewport = Screen您知道M1、P1、W1、V1和S1。
您正在寻找给定了M2、P2=P1、W2=W1、V2=V1的S2。
此外,您还知道D1=D2 (三维点不移动)。
D1 * M1 * P1 * W1 * V1 = S1
D1 * M2 * P1 * W1 * V1 = S2求解D1并将其等同于:
D1 = S1 * M1^-1 * P1^-1 * W1^-1 * V1^-1
D1 = S2 * M2^-1 * P1^-1 * W1^-1 * V1^-1
S1 * M1^-1 * P1^-1 * W1^-1 * V1^-1 = S2 * M2^-1 * P1^-1 * W1^-1 * V1^-1删除相似术语:
S1 * M1^-1 = S2 * M2^-1现在解决S2的问题:
S1 * M1^-1 * M2 = S2https://stackoverflow.com/questions/1390269
复制相似问题