понедельник, 11 августа 2014 г.

Коротко. Ссылки про графику

http://habrahabr.ru/post/126269/

http://mathprofi.ru/vektory_dlya_chainikov.html

http://mathprofi.ru/linejnaja_nezavisimost_vektorov_bazis_vektorov.html

Много для себя почерпнул... Особенно из первой ссылки, хотя и линейную алгебру вроде и на пять учил. Да и Дмитрий Дмитриевич Солнцев - был "преподаватель от бога", которых "ещё поискать"..

"Почему в трехмерной графике вектора из четырех координат?"

-- это САМЫЙ ПРАВИЛЬНЫЙ вопрос.

И это ОДИН из ПРАВИЛЬНЫХ ответов:

"Начинающие программисты, приступая к работе с 3D графикой, бывают озадачены одним простым вопросом: почему в трехмерной графике используются вектора из четырех координат? Объяснения старших товарищей обычно сводятся в мантре: «следи, чтобы в четвертой координате всегда была единица, – и все будет хорошо». Тоже правильно, но это же не ответ на вопрос «почему».

На самом деле, точки в трехмерной графике имеют четыре координаты потому что принадлежат проективному пространству, а не аффинному, и записываются соответственно в однородных координатах.

Аффинное пространство – R3 – это, например, привычное всем нам евклидово пространство. В нем точки записываются так: (xa, ya, za), причем: xa ∈ R, ya ∈ R, za ∈ R. А проективное пространство – это такое пространство, которое состоит из аффинного и вдобавок к нему из некоторой поверхности из бесконечно удаленных точек. Вот в аффинном пространстве для любой сколь угодно удаленной от точки центра можно придумать еще более удаленную точку. А в проективном дальше всех этих точек есть «стенка» из вообще совсем удаленных точек, дальше которых ничего нет. Когда мы в трехмерной графике говорим про бесконечно удаленный источник света, мы подразумеваем, что находится он на этой самой «стенке»."

И ещё (уже из комментариев):

"Я тоже не понял, в чём собственно проблема перемножить матрицы? И какая разница, какая размерность пространства?


+2
vanxant,#

В проективной 4-координатной геометрии почти все операции можно выразить в виде матриц, на которые нужно умножать матрицу с координатами. Поэтому в этой геометрии совокупность нескольких операций можно записать как A*B*C*D = A*(B*C*D), где выражение в скобках можно вычислить один раз для всех точек.
А вот в обычных 3-мерных координатах в виде матричного произведения можно представить только поворот и масштабирование. При этом параллельный перенос — это сумма матриц, а проецирование вообще не является чисто матричной операцией — там добавляются условия, связанные с точками на бесконечности — то есть это полноценная отдельная функция f(). То есть для каждой точки нужно вычислять выражение f( A*B+C ), которое совершенно никак не упрощается.


0
merlin-vrn,#

точно. я упустил, что перенос — это сумма, а не произведение матриц.


0
Nashev,#

Вот этот аспект и надо бы в первую очередь показать в статье! И проиллюстрировать как примерами, так и доказательствами, что в прочем можно и объединить."

ПОВТОРЮ! "точно. я упустил, что перенос — это сумма, а не произведение матриц."

Я САМ это - упустил...

И ещё:

"Так, свёртка двух функций сводится в пространстве изображений к операции умножения, а линейные дифференциальные уравнения становятся алгебраическими."

https://ru.wikipedia.org/wiki/%D0%9B%D0%B0%D0%BF%D0%BB%D0%B0%D1%81%D0%B0_%D0%BF%D1%80%D0%B5%D0%BE%D0%B1%D1%80%D0%B0%D0%B7%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5

Комментариев нет:

Отправить комментарий