Лабораторная работа 2: Раскраска граней многоугольных графов
Описание
Разработать программу раскраски граней многоугольного графа плоской прямолинейной укладки заданного (полу)правильного многогранника. Требуемая фигура должна формироваться по массивам его вершин, граней и ребер, которые определяют их взаимное расположение в графическом окне программы. При этом положение каждой вершины должно фиксироваться ее координатами в условных единицах, пропорциональных размеру графического окна программы. Для каждой грани должны быть указаны : список номеров и число ее вершин. Все ребра должны быть перечислены в минимальном наборе цепей из них, специфицированных списками номеров смежных вершин. Закодированное таким образом изображение должно быть симметрично расположено в графическом окне и пропорционально реконфигурироваться при любых изменениях его размера. При этом минимальный габарит графического окна программы должен быть установлен из расчета визуальной различаемости граней заданной фигуры. В начале все грани должны иметь одинаковый цвет фона. Изменение цвета каждой грани должно осуществляться по щелчку любой кнопки мыши, когда ее курсор находится внутри грани. Для раскраски граней в программе должна быть распределена палитра из n=4 цветов (плюс еще 1 цвет для изображения вершин и ребер). Чтобы установить необходимый цвет для любой грани в программе должен быть реализован циклический перебор цветов палитры с перекраской указанной грани последовательно в каждый из них. Кроме того, следует предусмотреть восстановление исходного цвета всех граней по нажатию клавиши Escape на клавиатуре и принудительную перерисовку графического окна по нажатию комбинации клавиш Ctrl-L. Завершение программы должно происходить по нажатию клавиши F10 . При разработке программы должна быть реализована обработка соответствующих событий и изображений в ее графическом окне с его многоугольными регионами. Для этого необходимо применить библиотечные функции программного интерфейса Xlib из XWindowSystem.
При выполнении программы требуется построить правильную раскраску граней заданной фигуры минимальным числом цветов, когда смежные грани имеют различные цвета.