我有旋转矩阵,平移向量和一组3D分类点(类别取决于z坐标)。一个2x2旋转矩阵M和一个2x1平移向量T与一个范畴有关。
如何将旋转和平移矩阵应用于坐标(x,y,z)的每个点上?是简单地,还是我误解了旋转矩阵的原理?
add to M a column and a line of 0
add to T a 0 for the z-transformation
then : (x, y, z) = M * (xp, yp, zp) + T
我正在为一个OpenGL ES 2.0 iOS应用程序实现平移,在某些情况下,我正在努力在z方向上进行平移。最初加载模型时,y+位于屏幕顶部,x+指向屏幕的左侧,而z+则指向屏幕外的用户。在这种情况下,平移的工作方式与预期的一样--平移“向右”按预期沿正x轴移动模型。Y也适用-平移“向上”沿正y轴移动模式(坐标变为负值,因此我们只是翻转坐标以正确执行操作)。问题总是与z轴有关,当模型旋转时,z+轴现在指向右边,平移“右”我得到负的z值,平移到左边我得到正值,所以看起来坐标像z轴一样翻转。当z+指向屏幕的左侧时,也会出现同样的逻辑--负值表示向左平移,正值表示向右平移。到目前一切尚好。
当z+现
这不是一个问题,但我很困惑什么三维空间对应什么。我习惯于听模型,视图,投影空间,但在我的工作中,他们使用世界,眼睛,投影。我没有意识到“世界”和“眼睛”是模型和视图的同义词,所以如果有人对此有任何混淆的话,我会发现下面的说明是有帮助的(希望它能帮助您)。
Local :这些坐标构成了渲染程序中的3D模型,比如3DSMAX或任何其他。它定义了三维模型本身的顶点空间。
模型/世界空间:将局部空间坐标乘以模型/世界矩阵将它们带入模型/世界空间。模型/世界空间是3D世界,正如我们想象的那样,它没有考虑任何视角。
视图/眼空间:将模型/世界空间坐标乘以视图/眼睛矩阵将它们带入视图/眼睛空间。这是坐标放置