我认为旋转相机并拍摄场景照片与保持相机稳定并反向旋转场景会产生相同的结果。
假设原始相机旋转矩阵为R1。旋转相机意味着我们应用另一个旋转矩阵 R12 (因此 R2=R12*R1 是新的旋转矩阵)。假设X是场景点的真实世界坐标。以反向方式旋转场景点意味着我们将反向旋转矩阵 R12^-1 应用于 X(这可能是错误的)。
那么为什么 (R12*R1)X != R1(R12^-1*X) ?
谁能解释一下我错了什么?
附注我不是在问编程以及这两种方法的复杂性。我只是想知道
(1)“旋转场景”动作的数学方程
(2)如果我假设的“旋转场景”方程是正确的,为什么数学方程不能像我所描述的那样反映现实世界中的现象。
Edit 1: 根据Spektre的答案,当我用旋转矩阵R旋转整个场景时,那么新的相机旋转矩阵是
R^-1*R1
在这种情况下,我用旋转矩阵 R12^-1 旋转整个场景,那么新的相机旋转矩阵是
(R12^-1)^-1*R1=R12*R1
但是,如果我认为旋转相机相当于旋转场景点 X (only场景点 X,而不是整个场景)。此时相机的旋转矩阵仍为R1。但场景点 X 现在变成了 X'。 X'的图像坐标为R1*X'。X' 的方程式是什么?注意
R1*X' = R12*R1*X
当然,你可以这样回答
X'=R1^-1*R12*R1*X
但我认为 X' 应该仅由 R12 和 X 定义(不需要知道 R1 即可形成 X')。这就是为什么我问“旋转场景点的数学方程是什么”。 X' 是通过与 R12 相关的某个旋转矩阵“旋转 X”动作的结果。
我还有另一个例子,相机不旋转而是移动。假设我正在拍摄站在我面前的模特的照片。她的位置是 X。我的位置是 C。在第一种情况下,我移动到(我的)右侧并拍摄第一张照片。在第二种情况下,我不动,但模型以相同的步骤向(我的)左侧移动,然后我拍摄了第二张照片。模型在两幅图像中的位置必须相同。这由数学方程表示
[R1 -R1*(C+d)]*X = [R1 -R1*C]*(X-d)
在上面的等式中(我检查是否正确),-R1*C 是平移向量,-R1*(C+d) 是我向右移动时的平移向量,(X-d) 是当模特移到我左边时。
在上面的示例中,X' = X-d(因此 X' 是通过 X 和我的运动 d 定义的)。在旋转相机的情况下,X'是什么?
Edit 2: Since Spektre还是不明白我的问题。需要强调的是,在第二种情况下,我不旋转整个世界,我只旋转 X 点。(如果我旋转整个世界,X 的世界坐标在其世界旋转后保持不变。但是如果我仅旋转 X,其世界坐标将更改为 X')。
想象一下为模特拍照的例子。在第一种情况下,我旋转相机并拍摄她的第一张照片(以及她站在她旁边的男朋友)。
在第二种情况下,我仅沿相反方向旋转模型(她的男朋友很稳定),然后拍摄第二张照片。当我比较两张照片时,模特的位置是相同的(她男朋友的位置会不同)。
在这两种情况下,她男朋友的现实世界地位都是一样的。但自从我旋转模型以来,在第二种情况下模型的真实世界位置发生了变化。我的问题是,旋转女孩后,她在现实世界中的位置是什么?