ПРОГРАМИРУЕМ 3D ГРАФИКУ ИСПОЛЬЗУЯ DirectX


актонель

Преобразования - часть 4


Рисунок. 5-3. Перенос по оси х


Фрагмент программы, в котором был осуществлен этот перенос, выглядит следующим образом:

void CMainFrame::OnEditTranslatex() (

if (!m_pCurShape) return;

C3dMatrix m;

m.Translate (2, О, О);

m_pCurShape-»AddTransform(m, D3DRMCOMBINE_AFTER) ;

}

Сначала мы создаем объект C3dMatrix для хранения матрицы переноса (в данном случае, для смещения на 2 единицы вдоль оси х). Затем преобразование применяется к текущей фигуре. Обратите внимание на аргумент D3DRMCOMBINE_AFTER, который указывает на необходимость применения преобразования после любых существующих преобразований. Другими словами, после завершения всех преобразований появляется дополнительный перенос объекта вдоль оси х.

Поворот

Теперь давайте развернем наш самолет, расположенный в начале координат, на 45 градусов вокруг оси у. Результат изображен на Рисунок 5-4.

Преобразования трехмерных объектов

/b>

Рисунок. 5-4, Поворот вокруг оси у


Ниже приведен текст функции, в которой выполняется поворот:

void CMainFrame::OnEditRotatey() {

if (!m_pCurShape) return;

C3dMatrix m;

m.RotatefO, 45, 0);

m_pCurShape-»AddTransform(m, D3DRMCOMBINE AFTER);

Масштабирование

Еще один тип преобразований объекта — масштабирование, увеличивающее или уменьшающее его размеры. Самое интересное заключается в том, что для каждой оси можно выбрать свой коэффициент масштабирования. На Рисунок 5-5 показано, как будет выглядеть самолет после растяжения только по осям х и у.

Наш самолет выглядит по меньшей мере странно! Результат последующего применения аналогичного масштабирования по оси z изображен на Рисунок 5-6.

Масштабирование в программе мало чем отличается от других, рассмотренных выше преобразований. Ниже приведен пример того, как выполняется масштабирование только по оси х:

void CMainFrame::OnEditscalex() {

if (!m_pCurShape) return;

C3dMatrix m;

m.Scale(2.0, 1.0, 1.0);

m_pCurShape-»AddTransform(m, D3DRMCOMBINE AFTER);

}

/b>

Глава 5. Преобразования

Рисунок. 5-5. Масштабирование объекта по осям х и у





Содержание  Назад  Вперед