В нашем приложении имеются команды
В нашем приложении имеются команды меню, поворачивающие объект вокруг осей макета, по аналогии с фрагментом на стр. 128. Сюда также включены команды для выполнения поворотов вокруг собственной оси объекта. Ниже приводится пример поворота вокруг оси у объекта:
void CMainFrame::OnEditRobjy() {
if (!m_pCurShape) return;
C3dMatrix m;
m.Rotate(0, 45, 0) ;
m_pCurShape-»AddTransform(m, D3DRMCOMBINE_BEFORE) ;
С первого взгляда кажется, что данный фрагмент полностью совпадает с приведенным на стр. 126, поболее внимательное рассмотрение показывает, что поворот на этот раз выполняется до текущего преобразования (D3DRMCOMBINEJ3EFORE), а не после него.
Возвращение на базу
Полет подходит к концу, и настало время возвращаться обратно. Наше приложение содержит команду Edit ¦ Reset, которая возвращает объект в начало координат
Преобразования трехмерных объектов
/b>
и возвращает ему исходное положение и ориентацию. Ниже приведена соответствующая функция:
void CMainFrame::OnEditReset()
{
if (!m_pCurShape) return;
C3dMatrix m;
m_pCurShape-»AddTransform(m, D3DRMCOMBINE_REPLACE) ;
}
Вам может показаться, что здесь допущена какая-то ошибка — ведь для матрицы вообще не задано никакого преобразования. Однако на самом деле именно это нам и нужно! Обратите внимание на использование аргумента D3DRMCOMBINE_REPLACE, заменяющего любое текущее преобразование новой матрицей. Конструктор матрицы инициализирует ее элементами единичной матрицы; заменяя текущую матрицу фрейма на матрицу идентичного преобразования, мы возвращаем объект в исходное состояние.
Экспериментируйте!
В приложении имеется окно диалога, открываемое командой Edit ¦ Transform Shape. Оно используется для задания произвольных преобразований переноса, поворота и масштабирования. В любом случае можно указать, следует ли применять новое преобразование до текущего, после него или же заменить текущее преобразование новым. Несколько опытов с окном диалога Transforms, изображенным на Рисунок 5-9, заполнят все возможные пробелы в вашем понимании того, как же комбинируются преобразования.
Содержание Назад Вперед