Задание 3. Визуализация данных в виде графика
Более сложной системой отображения данных является график. Построим зависимость Z от X. Для этого воспользуемся имиджем полилинии POLYLINE в библиотеке GRAPH2D. Установите ее имидж в рабочее поле, соедините переменные: X имиджа line_func с X имиджа polyline, а Z имиджа div_func с Y имиджа polyline. Не забудьте переменную HSPACE из имиджа polyline соединить с такой же в имидже GRAPHICSPACE.
Для настройки параметров полилинии, ее цвета, толщины и других важных параметров пользуйтесь данными имиджа polyline.
Для закрепления материала можете с помощью второй полилинии (сделайте копию) изобразить зависимость Y от X. И визуально посмотреть - где эти линии пересекаются. Чтобы сделать копию имиджа, укажите курсором на прототип, нажмите клавишу CTRL на клавиатуре и левую кнопку на мыши, и отведите курсор мыши в сторону. После того, как появится второе изображение имиджа, отпустите кнопку мыши и клавишу.
Запуская схему можно плавно шагами подойти к точке пересечения линий, остановиться в ней и посмотрев на вьюверы узнать: при каком значении X линии пересекаются, то есть определить корень системы двух нелинейных уравнений.
Может получиться так, что изображение в окне "Результаты" не будет отцентрировано. Как здесь поступить? Во-первых, указывая на контур окна курсором мыши и удерживая левую ее кнопку можно менять размеры окна. Кстати, размеры окна Вы можете задать как значения переменных Height и Width в имидже GraphicSpace прямо на схеме. Тогда окно будет появляться сразу требуемых размеров. Во-вторых, нажимая курсором мыши на верхнюю (синюю) строку любого из окон и удерживая ее левую кнопку можно двигать окна по экрану монитора, добиваясь удачного для них расположения. В-третьих, умножая, перед тем как передать на полилинию значения вычисленных X и Y на константы или прибавляя к ним константы, вы можете масштабировать, зеркалировать или сдвигать изображение. Например, на Y полилинии можно подавать значение переменной r (вычисляемой как r:=z*Mz+Sz), а не Z как ранее. Тогда Sz, равное например 100, будет сдвигать изображение полилинии в окне на 100 пикселей вниз, (-100) - вверх. Значение Mz, равное 5 например, увеличит изображение в 5 раз, а значение 0.1 уменьшит его в 10 раз. Формулу можно дописать в имидж div_func, а можно изготовить отдельный имидж и включить его в разрыв связи между полилинией и имиджем div_func.
Теперь поставим на конец каждого графика изображение цветной точки. Для этого, используйте стандартный имидж Ellipse из библиотеки Graph2d.LIB и соедините переменную X имиджа polyline с переменной X имиджа Ellipse и также Y с Y. Задайте переменным r1, r2 (радиусы эллипса по горизонтали и вертикали в пикселях) значения 2, а переменной BrushColor (цвет закраски эллипса) значение rgb(255,0,0). Другой имидж Ellipse соедините со второй полилинией также, но цвет задайте rgb(0,255,0). Не забудьте соединить у обоих имиджей Ellipse переменную HSpaceс соответствующей переменной из имиджа polyline или GraphicSpace, чтобы изображение красной и зеленой точек появилось в окне "Результаты".
Теперь будем управлять значением X непосредственно вручную с клавиатуры. Можно управлять переменными мышкой, клавиатурой, подавать значения из файла или базы данных, или, наконец, формировать автоматически, сконструировав для этого специальную формулу или систему.
Проще управлять значениями от мышки. Для этого удалите запись X:=X+1 из имиджа linear_func. Например так, укажите на имидж linear_func курсором и нажмите быстро дважды кнопку мыши. Откроется меню "Свойства имиджа". Нажмите на закладку "Текст". Встаньте курсором на строку с записью X:=X+1. Сотрите строку клавишами BackSpace и Delete. Возможен другой вариант. Можно не стирать строку, если есть подозрение, что она Вам потом понадобится вновь. В этом случае в начале строки наберите две косые черты - //X:=X+1. Такой символ означает, что за ним до конца строки идут комментарии, которые не подлежат вычислению. Когда будет необходимо можете убрать "косые".
Теперь установим на схему управлятор. Находясь на рабочем поле схемы нажмите правую кнопку мыши. Откроется меню. Выберите из него пункт "Вставить имидж из библиотеки" левой кнопкой мыши. Установите курсор мыши на указатель в поле библиотеки и щелкните по левой кнопке. Из списка библиотек выберите курсором мыши и нажатием ее левой кнопки строку CONTROLS.LIB. Просмотрите содержимое библиотеки. Найдите имидж с названием Vslider. Указав на него мышью, нажмите быстро дважды на ее левую кнопку, имидж окажется на рабочей схеме.
Теперь соединим имидж связью с имиджем linear_func. Соединим переменные Value (из Vslider) и X (из linear_func). Теперь, когда Вы будете во время расчета передвигать ползунок управлятора, то его смещение будет преобразовываться в значение Value, которое будет передаваться в имидж linear_func на переменную X. Таким образом, Вы можете произвольно изменять значение X.
Чтобы управлятор Vslider появился в окне "Результаты" и был Вам доступен, его переменную Hspace необходимо соединить с переменной Hspace имиджа GraphicSpace. Действуйте аналогично только что изложенному.
Теперь подготовьте данные в имидже Vslider. Для этого, укажите на него курсором мыши и нажмите быстро дважды ее левую клавишу. Появится меню "Свойства имиджа". Нажмите на закладку "Переменные". Появится список переменных и их значения. Теперь измените значения переменных Min и Max. Тогда управлятор в крайних положениях будет выдавать числа, равные указанным в этих переменных, а в промежуточных положениях - пропорционально им. Например, установите значения 0 и 200. Нажмите кнопку на меню ОК.
Теперь можно нажать кнопку "Пуск". Нажимая на изображение ползунка управлятора на схеме, плавно сдвигайте его. В результате значение переменной X будет изменяться, следовательно будут изменяться показания вьюверов и отрисовываться график.
Обратите внимание на то, что если резко изменять положение ползунка, то график будет ломаться. Это объясняется тем, что в этом случае переменная X принимает значения скачком, так как промежуточные ее значения просчитываться не успевают. Поэтому, ведите ползунок плавно.
Установите самостоятельно ползунок на переменную ширины полилинии Width имиджа Polyline.
Теперь будем выводить сигналы о превышении некоторого порогового значения.
Вставим из библиотеки имидж Lamp.
Для выработки сигнала о превышении порогового значения создадим имидж: TestFunc.
Содержащий строки flag:= x > porog.
Соединим его переменную Х с переменной Y имиджа в div_func, а переменную flag с переменной light имиджа Lamp. Задайте некоторое значение пороговой величины.
Задайте цвет лампочки в переменной Color имиджа Lamp.