Страница 1 из 1

Матричные преобразования

Добавлено: 12 авг 2010, 22:07
FloyDos
На вскидку, ссылка

http://www.fvn2009.narod.ru/Manuscripts ... edule6.htm

И так практически везде.
Почему необходимо оперировать матрицами 4x4?
Ведь, если 3х3 оставить, то же самое будет.

И вообще, зачем единица четвертой координатой?

Re: Матричные преобразования

Добавлено: 13 авг 2010, 12:33
Eugie
На этом же сайте объясняется, применительно к плоскости: http://www.fvn2009.narod.ru/Manuscripts ... edule5.htm
Коротко говоря, "лишняя" размерность нужна, чтобы сделать преобразования однородными, т.е. чтобы не только вращения и масштабирование, но и сдвиги можно было представлять в матричной форме. А современные графические процессоры "заточены" на матричные вычисления.

Re: Матричные преобразования

Добавлено: 16 авг 2010, 18:52
WinMain
Это во многом зависит от конкретной графической библиотеки. Так в Microsoft Direct3D используются матрицы размерностью 4х4, а в CATIA SDK, которая построена на OpenGL, в основном используются матрицы 3х3.
Если тебе слишком неудобно пользоваться матрицами 4х4, то можешь написать небольшую функцию-переходник, которая будет преобразовывать матрицы 3х3 в матрицы 4х4. Т.е. в основном коде программы все преобразования будут делаться с матрицами 3х3, а когда необходимо будет вызвать библиотечную функцию и передать ей матрицу 4х4, то воспользуйся для этого своей переходной функцией.

Re: Матричные преобразования

Добавлено: 04 сен 2010, 09:50
Decoder
WinMain, это не совсем так. В одной графической библиотеке могут использоваться как матрицы 3х3, так и 4х4. В том же CATIA SDK, который ты упомянул, именно так и есть.
Суть в том, что элементарные аффинные преобразования (сдвиг, перенос, вращение, масштабирование) можно описывать в матрице 3х3, а вот сложные (комбинированные) преобразования описываются матрицей 4х4. Их конечно можно разложить на последовательность элементарных преобразований и выполнить одно за другим, но удобнее всё-таки сделать это в одном действии.