【发布时间】:2011-02-04 22:25:45
【问题描述】:
我正在实现一个看起来像这样的列主要转换矩阵:
|----------| |------------| |------------|
| 0 3 6 9 | | RS R R X | | RS R R X |
| 1 4 7 10 | | R RS R Y | | R RS R Y |
| 2 5 8 11 | | R R RS Z | | R R RS Z |
|----------| |------------| | 0 0 0 1 |
|------------|
我知道缩放应该应用于位置 0、4 和 8,但它似乎不起作用。我从一个四元数设置方向,设置适当的位置,然后尝试在我的缩放中乘以位置 0、4 和 8。当这个变换被输入 OpenGL 时,我的形状会拉伸和挤压并且不能适当地缩放。我在这里遗漏了什么吗,我认为缩放是沿对角线的简单乘法?我的定向应用程序相对简单,但是向其添加缩放操作会导致奇怪的剪切和挤压效果。我做错了什么?
【问题讨论】:
-
您使用 4x3 矩阵而不是 4x4 矩阵是否有原因?
-
是的,减少了所需的存储空间,因为由于齐次坐标,底行被自动假定为 0, 0, 0, 1。底行隐含在计算中。
-
我想我的下一个问题是:你到底是如何将你的矩阵输入到 OpenGL 中的?你在使用着色器吗?
-
暂时没有。我在 GL_MODELVIEW 中使用 glMultMatrixf(float[16])。
-
粘贴您的代码。另外,请参阅有关 OpenGL 矩阵顺序的信息:j3d.org/matrix_faq/matrfaq_latest.html#I1
标签: opengl matrix 3d transformation linear-algebra