Легко добавить к классу Canvas функциональность, которая будет «управлять черепахой». Сначала к числу частных (private) элементов данных добавляется CD. Затем добавим три функции:

1. turnToffloat angle). Эта функция задает текущее направление черепахи, равное заданному углу (angle); реализация функции имеет вид

void Canvas:: turnTo(float angle) {CD=angle:}

1 Черепашья графика была введена Сеймором Папертом (Seymour Papert) в MIT (Massachussets Institute of Technologies - Массачусетсский технологический институт) как часть языка LOGO для обучения детей программированию.

3.5. Относительное рисование

2, turnffloat angle). Эта подпрограмма поворачивает черепаху на angle градусов против часовой стрелки; реализация функции имеет вид

void Canvas:: turn(angle){CD += angle:}

Для поворота вправо используется отрицательный аргумент. Отметим, что turn обеспечивает относительные изменения направления; мы задаем не направление, а только изменение направления. Это простое отличие предоставляет огромные возможности при рисовании сложных фигур с помощью черепахи.

3. forward (float dist. int isVisible). Эта команда перемещает черепаху вперед по прямой из текущей позиции CP на расстояние dist в текущем направлении CD, после чего обновляет СР. Если isVisible не равно нулю, то рисуется видимая прямая линия; в противном случае не рисуется ничего.

Результат действия подпрограммы forward()

Рис. 3.22. Результат действия подпрограммы forward()

Из рис. 3.22 видно, что, двигаясь вперед в направлении CD, черепаха перемещается в направлении х на расстояние distx cos(n х CD/180) и в направлении у на расстояние dist х sin(n х CD/180), поэтому forward О реализуется следующим образом"opengl1_174.html">⇐ Предыдущая| |Следующая ⇒