netlib.narod.ru< Назад | Оглавление | Далее >

15.5. Пример приложения: выбор объекта


Рис. 15.5. Окно примера к данной главе

Рис. 15.5. Окно примера к данной главе


На рис. 15.5 показано окно приложения, созданного для данной главы. Чайник перемещается по экрану, а вы должны попытаться щелкнуть по нему мышкой. Если вы попали в ограничивающую сферу чайника, на экран будет выведено сообщающее об этом диалоговое окно. Мы обрабатываем событие щелчка кнопки мыши проверяя сообщение WM_LBUTTONDOWN:

case WM_LBUTTONDOWN:
     // Вычисляем луч в пространстве вида на основании
     // координат указателя мыши в момент щелчка
     d3d::Ray ray = CalcPickingRay(LOWORD(lParam), HIWORD(lParam));

     // Преобразуем луч в мировое пространство
     D3DXMATRIX view;
     Device->GetTransform(D3DTS_VIEW, &view);

     D3DXMATRIX viewInverse;
     D3DXMatrixInverse(&viewInverse, 0, &view);

     TransformRay(&ray, &viewInverse);

     // Проверяем попадание
     if(RaySphereIntTest(&ray, &BSphere))
          ::MessageBox(0, "Hit!", "HIT", 0);

     break;

netlib.narod.ru< Назад | Оглавление | Далее >

Сайт управляется системой uCoz