2011-01-31 135 views
0

我想知道是否有人可以向我展示开发可用作观察变换的4x4变换矩阵的步骤。摄像头/观察变换矩阵

相机在(1,2,2)^ T 相机指向方向(0,1,0)^ T 向上矢量,它将被映射到正y方向图像,是方向(0; 0; 1)^ T。

我查看了我的笔记,不明白如何解决这些类型的问题,因为我知道它们在计算机图形学中很常见。

回答

1

您可以使用公式here,只填充矩阵并将每个矩阵依次相乘,直到您构建了变换矩阵。 (旋转矩阵可能有错误,请仔细检查公式here。)

您试图解决什么类型的问题?你没有真正问过一个狭隘的问题。

摄像机位置将与翻译矩阵进行设置:

[1 0 0 X] 
[0 1 0 Y] 
[0 0 1 Z] 
[0 0 0 1] 

代[1,2,2]^T为[X,Y,Z]^T

会给你一个平移矩阵:

[1 0 0 1] 
[0 1 0 2] 
[0 0 1 2] 
[0 0 0 1] 

这可以通过输入矢量相乘

[x y z 1]^T 

转化这一点上,像这样:

[1 0 0 1] [x] = x+1 
[0 1 0 2] [y] = y+2 
[0 0 1 2] [z] = z+2 
[0 0 0 1] [1] = 1 

对于输入向量[4,5,6,1],这将得到[5,7,8,1]。

看到它只是通过上面插入的X,Y,Z移动或转换输入x,y,z点(现在忽略最后一个组件)。

记住乘以向量v一个矩阵M为您提供了一个载体,把它叫做p

p = M v 

认为这是调用函数,有点像P = SIN(X),而是P = M(v)其中M是一个变换函数,它恰好是矩阵的形式,因为我们关心的变换可以严格地由线性算子表示,这是一种说法矩阵乘法的奇妙方式,这只是一种奇特的方式说4个标量乘法的总和。要将这些矩阵变换链接为函数调用,只需将它们相继乘以它们即可。 (请注意,这是一种简化,因为我们需要进行分割来进行透视变换,所以我们用4x4矩阵而不是仅仅3x3来欺骗和制造技巧 - 这就是奇怪的术语“均匀坐标”的含义。)

你的班级是否有教科书或讲义(如果它在线,你可以链接到它)?我会想象这些材料会涵盖其他转换并可能提供示例。你可以尝试一下,用上面的4×4矩阵乘以一个向量v = [-9 -8 -7],看看你从中得到了什么[x y z w]向量。然后尝试插入旋转矩阵的其他值。

如果翻译矩阵不是0,0,0,您可能会遇到棘手的比特,您需要将旋转矩阵与翻译矩阵按照正确的顺序相乘:如果翻译矩阵不是0,0,0,则R T将是与T R不同的矩阵。

+0

问题是要求我开发一个4 x 4矩阵,可以用作这些参数的视图转换,并显示我的工作。 – Joey 2011-01-31 06:37:34