Как видим, параметр Axis::x
x axis
”. Как правило, метка объясняет, что представляет собой ось и ее деления. Естественно, ось y_max-bottom_margin
, и не использовали бы “магические константы”, такие как 300 (см. раздел 4.3.1, раздел 15.6.2).Для того чтобы идентифицировать результаты, мы изменили метку экрана на строку "Canvas #2
set_label()
класса Window
.Теперь добавим ось y
Axis ya(Axis::y, Point(20,300), 280, 10, "y axis");
ya.set_color(Color::cyan); // выбираем цвет
ya.label.set_color(Color::dark_red); // выбираем цвет текста
win.attach(ya);
win.set_label("Canvas #3");
win.wait_for_button(); // изобразить!
Просто для того чтобы продемонстрировать некоторые возможности, мы раскрасили ось y
На самом деле мы не считаем удачной идею присваивать разные цвета осям
12.7.4. График функции
Что дальше? Теперь у нас есть окно с координатными осями, и кажется естественным нарисовать на нем график функции. Создадим фигуру, представляющую график синуса, и свяжем ее с окном.
Function sine(sin,0,100,Point(20,150),1000,50,50); // график синуса
// рисуем sin() в диапазоне [0:100) от (0,0) до (20,150),
// используя 1000 точек; для масштабирования координаты
// умножаются на 50
win.attach(sine);
win.set_label("Canvas #4");
win.wait_for_button();
Здесь объект класса Function
sine
рисует график синуса, используя стандартную библиотечную функцию sin()
. Детали построения графиков функций излагаются в разделе 15.3. А пока отметим, что для построения такого графика необходимо выбрать отправную точку (объект класса Point
), диапазон изменения входных значений, а также указать некоторую информацию, чтобы график поместился в окне (масштабирование).Теперь кривая будет заканчиваться на краю окна. Точки, изображенные за пределами окна, игнорируются системой графического пользовательского интерфейса и остаются невидимыми.
12.7.5. Многоугольники
График функции является примером представления данных. Подробно эта тема исследуется в главе 15. Однако в окне можно рисовать и другие объекты, например геометрические фигуры. Эти фигуры используются для создания графических иллюстраций, рисования элементов пользовательского интерфейса (например, кнопок) и просто для украшения результатов работы программы. Объект класса Polygon
sine.set_color(Color::blue); // мы изменили цвет графика синуса
Polygon poly; // класс Polygon - это разновидность класса Shape
poly.add(Point(300,200)); // три точки образуют треугольник
poly.add(Point(350,100));
poly.add(Point(400,200));
poly.set_color(Color::red);
poly.set_style(Line_style::dash);
win.attach(poly);
win.set_label("Canvas #5");
win.wait_for_button();
На этот раз мы изменили цвет графика синуса (sine
Polygon
имеют стиль. По умолчанию они сплошные, но их можно сделать пунктирными, точечными и т.п. (подробнее об этом — в разделе 13.5). Итак, мы получаем следующий результат.