变换缩放似乎不起作用

时间:2011-02-04 22:25:46

标签: opengl matrix 3d transformation linear-algebra

我正在实现一个列主要的转换矩阵,如下所示:

|----------|        |------------|      |------------|
| 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时,我的形状伸展和挤压,并且不适当缩放。我在这里遗漏了什么,我认为缩放是沿对角线的简单乘法?我的方向应用程序相对简单,但是向其添加缩放操作会导致奇怪的剪切和挤压效果。我做错了什么?

1 个答案:

答案 0 :(得分:4)

您想到的缩放矩阵仅对缩放或将其乘以现有变换有用。一旦基本转换不是身份,销售因素就适用于整个左上角3x3。只需评估乘法

/ Rxx Rxy Rxz \   / Sx  0  0  \
| Ryx Ryy Ryz | * |  0 Sy  0  |
\ Rzy Rzy Rzz /   \  0  0  Sz /

=

/ Rxx·Sx Rxy·Sy Rxz·Sz \
| Ryx·Sx Ryy·Sy Ryz·Sz |
\ Rzx·Sx Rzy·Sy Rzz·Sz /