Ук~аУк-ГУк-2 Для*-1,2,…

Здесь а - константа между 0 и 2,ук= 0 при k < 0, ayQ= 1. В общем случае, если положить а = 2cos(2n/5), то один цикл будет состоять из 5 точек. Хороший график получается при 5 = 40. Напишите подпрограмму, рисующую последовательности, сгенерированные таким образом, и протестируйте ее при различных значениях 5.

3.5. Относительное рисование Если мы добавим еще несколько средств рисования в наш инструментарий (которым является рождающийся класс Canvas), то некоторые изобразительные задачи значительно упростятся. Часто удобно начинать рисование в текущих координатах и описывать другие позиции относительно СР. Поэтому мы разрабатываем функции, параметры которых обозначают изменения координат. Программист указывает, сколь далеко нужно перемещаться вдоль каждой координаты для достижения следующей желаемой точки.

3.5.1. Разработка moveRel() и lineRel()

Вот две новые подпрограммы - moveRel О и UneReK). Функция moveRelO проста: она всего лишь «перемещает» CP на расстояние (dx, dy). Функция Ii neRel (float dx, float dy) делает то же самое, но сначала рисует прямую линию от старых CP до новых. Обе эти функции приведены в листинге 3.10.

3.5. Относительное рисование Листинг 3.10. Функции moveRel() и lineRel() void Canvas :: moveReHfloat dx. float dy) {

CP.setCCP.x + +dx. CP.y + dy):
}
void Canvas :: lineRel(float dx. float dy) {
float x - CP.x +dx. y=CP.y + dy; lineTo(x. y): CP.set(x. y):
}

Пример 3.5.1. Стрелочный маркер

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

Расстановка маркеров для выразительности

Рис 3.20. Расстановка маркеров для выразительности Поскольку одна и та же фигура рисуется в нескольких различных точках, то удобнее просто написать drawMarker О и получить рисунок данной фигуры в точке СР. Тогда линейный график рис. 3.20 можно нарисовать вместе с маркерами, используя код, подсказанный следующим псевдокодом"opengl1_172.html">⇐ Предыдущая| |Следующая ⇒