Программирование. Принципы и практика использования C++ Исправленное издание, стр. 201
Text ts(Point(100,y_orig–40),"one");Text ts2(Point(100,y_orig+y_orig/2–20),"x/2");Text ts3(Point(x_orig–100,20),"x*x");win.set_label("Function graphing: label functions");win.wait_for_button();С этого момента на протяжении всей главы мы будем пропускать повторяющийся код, связывающий фигуру с окном, присваивающий ей метку и ожидающий щелчка на кнопке Next.

x/2x*x(0,0)x/2(2,1)Код для построения осей состоит из объявлений двух объектов класса
Axisconst int xlength = xmax–40; // оси должны быть чуть меньше окнаconst int ylength = ymax–40;Axis x(Axis::x,Point(20,y_orig), xlength, xlength/x_scale, "one notch == 1");Axis y(Axis::y,Point(x_orig, ylength+20), ylength, ylength/y_scale, " one notch == 1");
Использование значения
xlength/x_scale(0,0)x.set_color(Color::red);y.set_color(Color::red);Итак, получаем результат, показанный ниже.

15.3. Класс Function
Определение класса графического интерфейса
Functionstruct Function:Shape { // параметры функции не хранятся Function(Fct f,double r1,double r2,Point orig, int count = 100,double xscale = 25,double yscale = 25);};Класс
FunctionShapeFunctionShapeff[r1:r2]Function::Function(Fct f,double r1,double r2,Point xy, int count,double xscale,double yscale) // строит график функции f(x) для x из диапазона [r1:r2), // используя count отрезков линий; // начало координат (0,0) располагается в точке xy // координаты x масштабируются множителем xscale // координаты y масштабируются множителем yscale{ if (r2–r1<=0) error("Неправильный диапазон"); if (count <=0) error("Отрицательное значение count"); double dist = (r2–r1)/count; double r = r1; for (int i = 0; i<count; ++i) { add(Point(xy.x+int(r*xscale),xy.y–int(f(r)*yscale))); r += dist; }}Параметры
xscaleyscaleОбратите внимание на то, что объект класса
FunctionShape15.3.1. Аргументы по умолчанию
Обратите внимание на способ инициализации аргументов
xscaleyscale