Преобразование 3D в 2D
Возобновляю тему, присутствующую в архивах. Итак, есть координаты точки A в 3D A(x,y,z,w). Для получения её изображения в окне, умножаю вектор (x,y,z,w) на матрицу видовых преобразований, затем на матрицу проекции. В результате получаю вектор (x',y',z',w'). Теперь из этих координат надо получить 2D координаты точки A(X,Y) в окне. Первый вопрос - как? Какие формулы перехода от вектора (x',y',z',w') к вектору (X,Y)? Один из вариантов я знаю, но не до конца понимаю кое что. Поделив x',y',z' на w', отбросим эту компоненту (ну или для упрощения будем считать её равной 1 и все равно отбросим). Получим вектор (x',y',z'). Тогда X=x'/f(z'), Y=y'/f(z'). То есть получаем перспективную проекцию. Но! Зачем тогда нужна матрица перспективной проекции, если перспективу мы получаем при преобразовании от 3D к 2D, или она просто производит некоторую коррекцию этого преобразования, а само преобразование забито жестко внутри 3D библиотеки? Но тогда, что делает матрица ортогональной проекции? Как получается ортогональная проекция, если преобразование дает перспективу? Или, если обратиться например к OpenGL, то при вызове glFrustum или glOrtho, мы кроме матрицы проекции задаем еще и алгоритм преобразования 3D в 2D?
Потрудитесь более четко сформулировать вопрос, ибо вопросительных предложений сильно много. Но не понятно, на какое нужен ответ.
Как производится переход от вектора в (x',y',z',w') пространстве к вектору (X,Y) на плоскости?
Здесь. Надо в FAQ кинуть...
Уже раз 20 давал ссылки.
Ну вроде как понял. Спасибо!