Задание координат полигонов является утомительным
Вспомогательные функции а2 = 3. * al, //====== 2 характерные точки xl = cos (al), yl = 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( xl, yl) ) ; m_Points.push_back(CDPoint(-xl, yl)) ; 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.), al = pi / 10., a2 - 3. * al, xl = cos(al), yl = sin(al), x2 = cos(a2), y2 = sin(a2); // Вещественные (World) координаты углов пятиугольника m_Points.push_back(CDPoint (0 ., 1.)); m_Points.push_back(CDPoint(-xl, yl)); m_Points.push_back(CDPoint(-x2, -y2)); m_Points.push_back(CDPoint( x2, -y2)); m_Points.push_back(CDPoint( xl, yl)); m_ptLT = CDPoint(-xl, 1.); m_ptRB = CDPoint( xl,-y2); |