|
Вспомогательные
функции
Задание координат
полигонов является утомительным занятием, поэтому мы, учитывая учебный характер
приложения, создали три вспомогательные функции, которые позволяют быстро воспроизвести
три различных полигона: звезду, треугольник и пятиугольник. Далее нам необходим
немодальный диалог, с помощью которого пользователь сможет создать произвольное
количество новых полигонов, выбирая их типы с помощью нестандартных кнопок и
управляя атрибутами полигонов (цветом фона, цветом и толщиной пера) с помощью
синхронизированных между собой элементов управления. Дополните файл ТгееОос.срр
кодами еще трех функций:
void
CPolygon::MakeStar()
{
m_Points.clear();
//======
Вспомогательные переменные
double
pi = 4. * atan(l.), // Углы
al
= pi / 10.,
а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);
| |