Формальные требования к выполнению задания 5 (геометрия)

Реализация каждой задачи должна удовлетворять общим требованиям, изложенным ранее для задания 1. В частности, программа размещается в нескольких файлах, используется заголовочный файл для прототипов функций, запись кода соответствует общепринятым стилевым требованиям и т.п.

Специфика данного задания. Геометрические объекты (точки, векторы, отрезки, линии и т.д.) должны быть представлены структурными типами. Основные манипуляции и обработка таких объектов должна быть реализована в виде набора подходящих процедур и/или (для тех кто разобрался) в форме переопределенных операций в С++.

Исходные данные следует задавать в файлах, чтобы можно было легко модифицировать геометрические конфигурации этих входных данных. Нужно заранее заготовить несколько конфигураций, отражающих различные случаи взаимных расположений объектов, их форм и т.д. по смыслу решаемой задачи.

Для быстрой и наглядной проверке работоспособности программы нужно получать результат не только в форме чисел или координат, но и отображать эти результаты в виде графических рисунков. В данном задании не ставится задача отрисовывать фигуры самому из своей программы, можно воспользоваться различными доступными программами-рисовалками, формируя из своей прогреммы соответствующие файлы данных для них.

В сети можно встретить множество свободно распространяемых программ для рисования графиков, диаграмм и пр.

Одним из достаточно простых в использовании является пакет Gnuplot. Он свободно распространяется в версиях под Linux и Windows. Пакет Gnuplot ориентирован на отображении разной графической информации, касающейся математических вычислений - графиков, диаграмм, простейших поверхностей и т.д. Для наших целей будет достаточно самых простейших возможностей этого пакета, которые сводятся к отрисовке набора отрезков, по координатам, заданным в файле.

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

Простейший вариант работы Gnuplot состоит в отрисовке ломаной линии по координатам, записанным в файле. В каждой строке файла записываются координаты x,y очередной точки. Если строки с точками записаны друг за зругом без пустых строк, то получаем ломаную, с вершинами в этих точках. Если между координатами находится строка, содержащаяя несколько пробелов и больша ничего, то ломаная прерывается. Можно отображать ломанные, записанные в разных файлах. Можно отрисовывать только точки без линий между ними.

Пусть мы хотим изобразить квадрат и треугольник одним цветом и еще провести линию между ними другим цветом. Простейший сценарий работы (достаточный для наших целей) выглядит так:

Создаем файлы sq-tr для квадрата и треугольника, lin для линии. Записываем в файлы какие-то координаты:

файл sq-tr
0 0
0 1
1 1
1 0
0 0
      тут строка с пробелами
5 5
5 6
6 5
5 5
файл lin
1 1
5 5

Запускаем Gnuplot, пишем команду

plot `sq-tr' with lines lt 1, `lin' with lines lt 3

with lines --- рисовать линии, без нее просто будут просто точки
lt N --- рисовать цветом N (1, 2, 3, ....)

другие команды

reset --- сбросить все настройки к исходному состоянию
cd 'путь' --- установить рабочий каталог, где лежат ваши файлы с данными
set grid --- режим рисования сетки на графике
set xrange [a:b] --- установить диапазон поля по х от a до b
set yrange [a:b] --- то же по y. Полезно, когда автоматический выбор диапазона вам не подходит
все установки задаются перед командой plot и видны только при отработке этой команды.