numCorners - 0: // back to 0 corners // назад к нулевому значению corners }

}

Здесь подпрограмма Sierpinski О та же самая, что и в листинге 2.6, за исключением того, что три вершины треугольника передаются в качестве параметров.

Пример 2.4.4. Создание ломаной линии с помощью мыши На рис. 2.23 показано создание ломаной линии посредством нажатия кнопки мыши. Теперь вместо того, чтобы замещать каждой новой точкой старую, мы будем сохранять все отмеченные точки для дальнейшего использования. Пользователь вводит с помощью мыши последовательность точек, и каждая из этих точек записывается в следующую имеющуюся в распоряжении ячейку массива. Если массив заполнен целиком, то следующие точки не принимаются. После каждого щелчка мышью окно очищается и вся текущая ломаная линия перерисовывается заново. При нажатии правой кнопки мыши вся ломаная уничтожается.

Интерактивное создание ломаной линии

Рис. 2.23. Интерактивное создание ломаной линии Листинг 2.16 иллюстрирует одну возможную реализацию этой процедуры. Отметим, что переменная last хранит последнее значение индекса, использованного в массиве List[]; она увеличивается на единицу всякий раз, когда отмечается новая точка, и устанавливается в -1 при сбросе списков. Если желательно разрешить использование точек в List вне подпрограммы myMouse[], то переменную List можно сделать глобальной.

2.4. Простое взаимодействие с помощью мыши и клавиатуры

Листинг 2.16. Рисовальщик ломаной с помощью щелчков мышью

void myMouse(int button, int state, int x. int y) {
#define NUM 20
static GLintPoint List [NUM]"opengl1_122.html">⇐ Предыдущая| |Следующая ⇒