Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как выщитать матрицу.


Kovenos ©   (2005-09-25 13:21:00) 

Привет, скажите пожалуйста как выщитывать матрицу 4*4 и вобще что это такое. Можно ссылку подкинуть.


XProger   (2005-09-25 14:15:00) [1]

Если это то о чём я думаю, то...
Матрица описывает некоторые вершинные преобразования.
В OpenGL имеется 3 вида матриц:

GL_MODELVIEW_MATRIX
GL_PROJECTION_MATRIX
GL_TEXTURE_MATRIX


Первая описывает преобразования в мировой системе координат - матрица вида
Вторая преобразования проекции (ортогональная, перспектива) - матрица проекции
Третья описывает преобразования тестурных координат - матрица текстуры

Перед выводом  примитива, все его точки домножаются на матрицу вида, затем полученные новые координаты пропускает через матрицу проекции, и на выходе получаем координаты точки в поле вывода (ViewPort)

Чтобы вытащить матрицу необходимо проделать следующее:

glGetFloatv(GL_MODELVIEW_MATRIX, @mm);

Где mm : array [0..15] of single;
Так мы можем получить любую из трёх матриц.

Сама матрица вида выглядит так:

xaxis.x           yaxis.x           zaxis.x          0
xaxis.y           yaxis.y           zaxis.y          0
xaxis.z           yaxis.z           zaxis.z          0
-dot(xaxis, eye)  -dot(yaxis, eye)  -dot(zaxis, eye)  1


В столбиках описываются вектора Dir Up Left задающие ортогональную систему координат. В последней строке солдержится смещение новой системы координат относительно мировой которая описывается единичной матрицей
1000
0100
0010
0001

Чтобы изменить одну из матриц достаточно переключиться на неё

glMatrixMode(GL_MODELVIEW); // без приставки _MATRIX

и проделать ряд простых операций (glTranslate, glRotate, glScale)

Также можно сбросить матрицу glLoadIdentity;
Сохранить текущее состояние текущей матрицы в кеш glPushMatrix;
И вернуть эту матрицу из кеша glPopMatrix;
Также можно домножить на матрицу glMultMatrixf(@m);

Подробнее об операциях над матрицами можешь почитать по ссылке
http://mirgames.ru/article/gamedev/math


NewWonder   (2005-09-25 14:06:00) [2]

По сабжу, квадратную матрицу четвёртого порядка (то есть её определитель) считается методом разложения по строке/столбцу, если я ничего не путаю.


NewWonder   (2005-09-25 14:04:00) [3]

Матрица - табличка чисел а-ля вот:

1 2 3
4 5 6
7 8 9

Это матрица, квадратная, третьего порядка. Можно посчитать определитель, транспонировать её, умножить на какое-нибудь число, строки поменять местами. Одним словом, матрица - клёвая вещь :) Определитель можно высчитать по правилу треугольников, например ;)
Удачи ;)


NewWonder   (2005-09-25 14:01:00) [4]

Учебник по линейной алгебре нужен Вам.


Kerk   (2005-09-25 13:53:00) [5]

:)))) выщитать... не разобрал на скорости :))

а матрицы не выщитывают.. определитель можно высчитать..а матрицу.. хмм.. "что это такое"? (с)


Kerk   (2005-09-25 13:50:00) [6]

Нефиг было ее туда засовывать.. теперь хрен вытащишь..


Наверх

Титульная страница Поиск, карта сайта Написать письмо