Программирование игр, создание игрового движка, OpenGL, DirectX, физика, форум
GameDev.ru / Программирование / Форум / Матрицы

Матрицы

Поделиться

Страницы: 1 2 3 4 5 Следующая

mik2060Постоялецwww21 июня 200819:22#0
Всем привет!!! Существует ли формула, по которой из матрицы можно убрать масштабирование, не зная коэффициентов масштабирования???
SuslikМодераторwww21 июня 200819:44#1
Конечно существует, малыш! Любую матрицу преобразования можно разложить в композицию масштабирования и поворота! Вектора, вдоль которых идёт масштабирование, называются собственными векторами, и удовлетворяют уравнению
Ah = lambda h; (1)
Всё, что тебе нужно, чтобы его решить - это решить уравнение
det|A - lambda E| = 0;
Для трёхмерного случая этоу равнение третей сетпени. Решив его, ты найдёшь три числа - lambda1, lambda2, lambda3, которые ещё называются собственными. В нашем простом случае примем, что все они действиетльные.

Дальше тебе нужно построить базис в пространстве R3 из собственных векторов, или, как его ещё называют в этом случае, жорданову цепочку. Каждый вектор этой цепочки являюется собственным, то есть удовлетворяет условию (1) Подставляя последовательно различные собственные числа из тех, что ты нашёл, решаешь систему из трёх линейных уравнений и находишь от одного до трёх собвенных векторов.

Если бы был хоть малюсенький шансик, что ты это поймёшь, я бы рассказал, как быть, когда есть несколько совпадающих космплексных чисел, и как, зная, наконец, собственные числа и собственные вектора, осуществить декомпозицию исходной матрицы. Но, чувствуя, что шансов нет, я просто забью.

Удалёнwww21 июня 200819:52#2
Suslik
Я все понял. Ничего сложного ты не рассказал.
Жду продолжения рассказа!
SuslikМодераторwww21 июня 200820:22#3
>Я все понял. Ничего сложного ты не рассказал.
Ещё бы я сказал что-то сложнои из программы аналитической геометрии первого курса. Как бы банально это ни звучало, настоятельно рекомендую прочитать учебник Беклемишева "Аналитическая геометрия" от корки до корки - ничего страшного там нет, зато у вас в жизни точно не возникнет подобных вопросов. В принципе, можно было бы написать статью по основам векторной математики в программировании, но зачем, когда всё уже есть, и написано куда лучше, чем написал бы я - скачивай да читай.
mik2060Постоялецwww21 июня 200821:10#4
Suslik
А мне и не нужны твои объяснения!
SuslikМодераторwww21 июня 200821:12#5
mik2060
да куда уж мне..
KolhiziNПостоялецwww21 июня 200821:19#6
Suslik
Может быть все-таки лучше полярное разложение? Как раз получится унитарная и положительноопределенная матрица.
3.141592654Постоялецwww23 июня 200822:32#7
да я тоже не совсем понял что он (mik2060) хочет
AndreyПостоялецwww24 июня 200811:00#8
mik2060
D3DXMatrixDecompose
может тебе это поможет?
а вот и книга рекомендуемая Suslik
http://www.a-geometry.narod.ru/other/books/beklemishev.rar
drv47Постоялецwww24 июня 200814:37#9
Suslik
>Ещё бы я сказал что-то сложнои из курса аналитической геометрии первого семестра
А у меня собственные значения, жорданова форма и характеристический многочлен только во втором семе были =(

mik2060
Suslik прав, почитай любой учебник по линалу.

SuslikМодераторwww24 июня 200817:27#10
drv47
>А у меня собственные значения, жорданова форма и характеристический многочлен только во втором семе были =(
у меня тоже - исправил :)
CyberZXПостоялецwww24 июня 200817:39#11
Если кто-то не понял, что написал Суслик, то советую к прочтению вот эту пдфку http://cyberzx.com/doc/animation/polar-decomp.pdf
там весьма доходчиво разжёваны алгоритмы декомпозиции матриц аффинного преобразования
CyberZXПостоялецwww24 июня 200817:42#12
mik2060
>А мне и не нужны твои объяснения!
зачем тогда задавать вопрос на форуме?
mik2060Постоялецwww24 июня 200821:10#13
CyberZX
Я сам нашел инфу!
lsiSergПостоялецwww24 июня 200822:34#14
Помоему глупо считать, что все программисты обязаны вникать в математику на таком глубоком уровне. В программировании, а особенно gamedev, решение математических задач аля декомпозиция матриц или решение уравнений, интегралов, лимитов, занимает самую мизерную долю.  Программист в данной области может быть вполне успешным, и намного успешней другого, который живет в математическом мире и как в мире "матрицы" видет вокруг себя интегралы с другими краказяблами (т.е. тут нет связи). Мало того, я даже считаю, что программист не обладающий очень (а может о вообще не очень) глубокими познаниями в математике имеет больше шансов получить высокий карьерной рост, к которому уверен тут все стремятся.
Считаю, что mik2060 поставил вполне корректный вопрос, ну а ответ получил как принято на форуме.
Уверен, что пора отходить от понятий - синдром всезнайки, поскольку писать свой физ-двиг + рендер + игра одновременно не имеет смысла.  Неплохо бы иметь базу готовых оптимальных решений различных задач, а не отправлять постоянно для прочтения несколько десятков листов по каждой мелочи (под базой я представляю геймдев форум с вменяемыми ответами на простые вопросы). Это будет намного эффективней, отдать время на написание непосредственно игры/двига/любой задачи, чем потратить день/несколько  на понимание, а как декомпозицию получить, чтобы .... (к примеру научить юнита прятаться).

Все сказанное ИМХО, программистам свое, математикам свое.
В свое время, когда я еще учился и работал одновременно, у нас на работе были программисты (тупые как я) и математики. Отлично решались все вопросы. Я тогда бильярд реализовывал с кручеными ударами, перепрыгиванием .... И ничего не помешало реализовать интересную физ-модель, спасибо математику, который расписал все в привычных для студента формулах. Хороший такой симбиоз.


Страницы: 1 2 3 4 5 Следующая

/ Форум / Программирование игр / Графика

Тема в архиве.

2001—2017 © GameDev.ru — Разработка игр