Вспомогательные функции
Задание координат полигонов является утомительным занятием, поэтому мы, учитывая учебный характер приложения, создали три вспомогательные функции, которые позволяют быстро воспроизвести три различных полигона: звезду, треугольник и пятиугольник.
Далее нам необходим немодальный диалог, с помощью которого пользователь сможет создать произвольное количество новых полигонов, выбирая их типы с помощью нестандартных кнопок и управляя атрибутами полигонов (цветом фона, цветом и толщиной пера) с помощью синхронизированных между собой элементов управления. Дополните файл ТгееОос.срр кодами еще трех функций:
void CPolygon::MakeStar() { m_Points.clear(); //====== Вспомогательные переменные double pi = 4. * atan(l.), // Углы al = pi / 10., а2 = 3. * al, //====== 2 характерные точки x1 = cos (al), y1 = sin (al), x2 = cos(a2), y2 = sin(a2); //=== Вещественные (World) координаты углов звезды m_Points.push_back(CDPoint(0., 1.)); m_Points.push_back(CDPoint <-x2, -y2)); m_Points.push_back(CDPoint(x1, y1)); m_Points.push_back(CDPoint(-x1, y1)); m_Points.push_back(CDPoint(x2, -y2)); //====== Габариты звезды m_ptLT = CDPoint(-xl, 1.); m_ptRB = CDPoint(xl,-y2); //====== Генерация треугольника void CPolygon::MakeTria() { m_Points.clear(); double pi = 4. * atand(1.); a = pi / 6.; x = cos (a); у = sin(a); m_Points.push_back (CDPoint(0., 1.)); m_Points,push_back (CDPoint(-x, -y)); m_Points.push_back (CDPoint(x, -y)); m_ptLT = CDPoint (-x, 1.); m_ptRB = CDPoint (x,-y); //====== Генерация пятиугольника void CPolygon::MakePent() { m_Points.clear (); double pi = 4. * atan(l.), a1 = pi / 10., a2-3. * al, x1 = cos(al), y1 = sin(al), x2 = cos(a2), y2 = sin(a2); // Вещественные (World) координаты углов пятиугольника m_Points.push_back(CDPoint (0., 1.)); m_Points.push_back(CDPoint(-x1, y1)); m_Points.push_back(CDPoint(-x2, -y2)); m_Points.push_back(CDPoint(x2, -y2)); m_Points.push_back(CDPoint(x1, y1)); m_ptLT = CDPoint(-x1, 1.); m_ptRB = CDPoint(x1,-y2);