Войти
ПрограммированиеФорумГрафика

Матрицы

Страницы: 1 2 3 4 5 Следующая »
#0
19:22, 21 июня 2008

Всем привет!!! Существует ли формула, по которой из матрицы можно убрать масштабирование, не зная коэффициентов масштабирования???


#1
19:44, 21 июня 2008

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

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

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

#2
19:52, 21 июня 2008

Suslik
Я все понял. Ничего сложного ты не рассказал.
Жду продолжения рассказа!

#3
20:22, 21 июня 2008

>Я все понял. Ничего сложного ты не рассказал.
Ещё бы я сказал что-то сложнои из программы аналитической геометрии первого курса. Как бы банально это ни звучало, настоятельно рекомендую прочитать учебник Беклемишева "Аналитическая геометрия" от корки до корки - ничего страшного там нет, зато у вас в жизни точно не возникнет подобных вопросов. В принципе, можно было бы написать статью по основам векторной математики в программировании, но зачем, когда всё уже есть, и написано куда лучше, чем написал бы я - скачивай да читай.

#4
21:10, 21 июня 2008

Suslik
А мне и не нужны твои объяснения!

#5
21:12, 21 июня 2008

mik2060
да куда уж мне..

#6
21:19, 21 июня 2008

Suslik
Может быть все-таки лучше полярное разложение? Как раз получится унитарная и положительноопределенная матрица.

#7
22:32, 23 июня 2008

да я тоже не совсем понял что он (mik2060) хочет

#8
11:00, 24 июня 2008

mik2060
D3DXMatrixDecompose
может тебе это поможет?
а вот и книга рекомендуемая Suslik
http://www.a-geometry.narod.ru/other/books/beklemishev.rar

#9
14:37, 24 июня 2008

Suslik
>Ещё бы я сказал что-то сложнои из курса аналитической геометрии первого семестра
А у меня собственные значения, жорданова форма и характеристический многочлен только во втором семе были =(

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

#10
17:27, 24 июня 2008

drv47
>А у меня собственные значения, жорданова форма и характеристический многочлен только во втором семе были =(
у меня тоже - исправил :)

#11
17:39, 24 июня 2008

Если кто-то не понял, что написал Суслик, то советую к прочтению вот эту пдфку http://cyberzx.com/doc/animation/polar-decomp.pdf
там весьма доходчиво разжёваны алгоритмы декомпозиции матриц аффинного преобразования

#12
17:42, 24 июня 2008

mik2060
>А мне и не нужны твои объяснения!
зачем тогда задавать вопрос на форуме?

#13
21:10, 24 июня 2008

CyberZX
Я сам нашел инфу!

#14
22:34, 24 июня 2008

Помоему глупо считать, что все программисты обязаны вникать в математику на таком глубоком уровне. В программировании, а особенно gamedev, решение математических задач аля декомпозиция матриц или решение уравнений, интегралов, лимитов, занимает самую мизерную долю.  Программист в данной области может быть вполне успешным, и намного успешней другого, который живет в математическом мире и как в мире "матрицы" видет вокруг себя интегралы с другими краказяблами (т.е. тут нет связи). Мало того, я даже считаю, что программист не обладающий очень (а может о вообще не очень) глубокими познаниями в математике имеет больше шансов получить высокий карьерной рост, к которому уверен тут все стремятся.
Считаю, что mik2060 поставил вполне корректный вопрос, ну а ответ получил как принято на форуме.
Уверен, что пора отходить от понятий - синдром всезнайки, поскольку писать свой физ-двиг + рендер + игра одновременно не имеет смысла.  Неплохо бы иметь базу готовых оптимальных решений различных задач, а не отправлять постоянно для прочтения несколько десятков листов по каждой мелочи (под базой я представляю геймдев форум с вменяемыми ответами на простые вопросы). Это будет намного эффективней, отдать время на написание непосредственно игры/двига/любой задачи, чем потратить день/несколько  на понимание, а как декомпозицию получить, чтобы .... (к примеру научить юнита прятаться).

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


Страницы: 1 2 3 4 5 Следующая »
ПрограммированиеФорумГрафика

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