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

4.10.1. Использование областей экрана Предположим, что решено использовать одну кнопку мыши для управления ориентацией объекта, другую - для сдвига его ближе к наблюдателю или дальше от него, а третью - для смещения объекта вправо-влево или вверх-вниз. Для организации таких процедур можно воспользоваться функцией с обратным вызовом motion(), которая возвращает информацию о том, какая кнопка мыши нажата и где находится указатель мыши на экране. Информацию о положении указателя мыши можно использовать для управления скоростью вращения или смещения и их направлением.

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

Сдвиг объекта вправо-влево или вверх-вниз можно выполнять по этой же схеме, но использовать правую кнопку мыши. Для управления движением объекта к наблюдателю или от него (вдоль оси г) будем использовать среднюю кнопку. При этом можно принимать во внимание только положение указателя по вертикали относительно центра экрана.

Мы предоставляем читателям возможность самостоятельно реализовать описанный алгоритм в виде программы (см. упр. 4.19).

4.10.2. Виртуальный трекбол Идея использовать текущее положение указателя мыши для управления поворотом вокруг двух осей координат очень близка к тем методам, которые используются при работе с трекболом (см. главе 3). Ниже мы рассмотрим, как развить эти идеи и создать виртуальный трекбол, используя только мышь. Одно из достоинств этого "устройства" состоит в том, что задав с его помощью параметры, можно организовать непрерывное вращение, которое прекратится только по команде пользователя. Кроме того, оно позволяет оперативно, "на ходу", изменять скорость вращения и его направление. Этот же принцип можно использовать и для управления смещением объекта.


⇐ Предыдущая| |Следующая ⇒