На вскидку, ссылка
http://www.fvn2009.narod.ru/Manuscripts ... edule6.htm
И так практически везде.
Почему необходимо оперировать матрицами 4x4?
Ведь, если 3х3 оставить, то же самое будет.
И вообще, зачем единица четвертой координатой?
Матричные преобразования
Модераторы: Duncon, Hawk, Romeo, Eugie
На этом же сайте объясняется, применительно к плоскости: http://www.fvn2009.narod.ru/Manuscripts ... edule5.htm
Коротко говоря, "лишняя" размерность нужна, чтобы сделать преобразования однородными, т.е. чтобы не только вращения и масштабирование, но и сдвиги можно было представлять в матричной форме. А современные графические процессоры "заточены" на матричные вычисления.
Коротко говоря, "лишняя" размерность нужна, чтобы сделать преобразования однородными, т.е. чтобы не только вращения и масштабирование, но и сдвиги можно было представлять в матричной форме. А современные графические процессоры "заточены" на матричные вычисления.
Это во многом зависит от конкретной графической библиотеки. Так в Microsoft Direct3D используются матрицы размерностью 4х4, а в CATIA SDK, которая построена на OpenGL, в основном используются матрицы 3х3.
Если тебе слишком неудобно пользоваться матрицами 4х4, то можешь написать небольшую функцию-переходник, которая будет преобразовывать матрицы 3х3 в матрицы 4х4. Т.е. в основном коде программы все преобразования будут делаться с матрицами 3х3, а когда необходимо будет вызвать библиотечную функцию и передать ей матрицу 4х4, то воспользуйся для этого своей переходной функцией.
Если тебе слишком неудобно пользоваться матрицами 4х4, то можешь написать небольшую функцию-переходник, которая будет преобразовывать матрицы 3х3 в матрицы 4х4. Т.е. в основном коде программы все преобразования будут делаться с матрицами 3х3, а когда необходимо будет вызвать библиотечную функцию и передать ей матрицу 4х4, то воспользуйся для этого своей переходной функцией.
WinMain, это не совсем так. В одной графической библиотеке могут использоваться как матрицы 3х3, так и 4х4. В том же CATIA SDK, который ты упомянул, именно так и есть.
Суть в том, что элементарные аффинные преобразования (сдвиг, перенос, вращение, масштабирование) можно описывать в матрице 3х3, а вот сложные (комбинированные) преобразования описываются матрицей 4х4. Их конечно можно разложить на последовательность элементарных преобразований и выполнить одно за другим, но удобнее всё-таки сделать это в одном действии.
Суть в том, что элементарные аффинные преобразования (сдвиг, перенос, вращение, масштабирование) можно описывать в матрице 3х3, а вот сложные (комбинированные) преобразования описываются матрицей 4х4. Их конечно можно разложить на последовательность элементарных преобразований и выполнить одно за другим, но удобнее всё-таки сделать это в одном действии.
Поумнеть несложно, куда труднее от дури избавиться.