moveTo(first data point):
drawMarkerO:
// draw a marker there

// рисуем маркер здесь

for(each remaining data point)

// для каждой остающейся экспериментальной точки

{

lineToCthe next point): // draw the next line segment // рисуем следующий отрезок прямой

drawMarkerO; // draws it at the CP // рисует маркер в точке CP

центр обработки данных datahata.by в Беларуси.

}

На рис. 3.21 изображен маркер в форме стрелки, нарисованный с помощью подпрограммы из листинга 3.11. Текущие координаты этой стрелки расположены в ее самой верхней точке. Для большей гибкости стрелка задана четырьмя параметрами/, я, t и w, как показано на рисунке. Функция arrowQ исполь-

Дополнительные инструменты для рисования

зует только ИпеЯеК), причем нет ни одной ссылки на абсолютные координаты. Отметим, что хотя СР изменяются в процессе рисования, в конце они снова возвращаются к своему исходному состоянию. Следовательно, данная подпрограмма не дает никаких «побочных эффектов» (кроме самого рисования).

Листинг 3.11. Рисование стрелки посредством относительных перемещений и рисований void arrow(float f. float h. float t. float w) {

// assumes global Canvas object: cvs // предполагаем существование cvs -// глобального объекта класса Canvas

cvs.lineRel(-w - t/2. -f): // down the left side // вниз по левой стороне

cvs.lineReKw. 0):
cvs.lineReKO. -h);
cvs.lineReKt. 0);

// across // поперек

cvs.lineReKO. h): // back up // назад

cvs.lineReKw. 0); cvs.lineRel(-w - t/2. f):
}

3.5.2. Черепашья графика Последний инструмент, который мы добавляем здесь, чрезвычайно удобен. Он не только отслеживает с помощью СР, «где мы находимся», но и «направление, в котором нас ведут». Это - разновидность черепашьей графики, которая считается естественной в графическом программировании1. Идея состоит втом, что «черепаха», подобная перу перьевого плоттера, перемещается по странице, оставляя за собой след в виде отрезка прямой линии. Черепаха помещается в СР, указывая определенное направление. Оно называется текущим направлением (current direction - CD) и отсчитывается в градусах от положительного направления оси х против часовой стрелки (counterclockwise - CCW).


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