CMyDoc::CMyDoc()
{
	//====== Вспомогательные переменные
	double	pi = 4. * atan(1.),
			a1 = pi / 10., 		// Углы
			a2 = 3. * a1,
			//====== 2 характерные точки
			x1 = cos(a1),
			y1 = sin(a1),	
			x2 = cos(a2),
			y2 = sin(a2),
			x[5], y[5];
	
	//===== Вещественные (World) координаты углов звезды
	//===== Считаем, что начало координат находится
	//===== в геометрическом центре звезды
	x[0] = 0.;		y[0] = 1.;		// Макушка звезды	
	x[1] = -x2;		y[1] = -y2;		// Нижний левый угол
	x[2] = x1;		y[2] = y1;		// Верхний правый угол
	x[3] = -x1;		y[3] = y1;		// Верхний левый угол
	x[4] = x2;		y[4] = -y2;		// Нижний правый угол
	
	//===== Логические координаты углов звезды
	//===== запоминаем в контейнере
	for (int i=0; i<5; i++)
	{
		//===== Точка в логической системе координат
		// Увеличиваем в 100 раз, переводим в целые и сдвигаем		
		CPoint pt(200 + int(100. * x[i]),
					150 - int(100. * y[i]));
		//==== Запись в конец контейнера
		m_Points.push_back(pt);
	}
}


void CMyView::OnDraw(CDC* pDC)
{
	CMyDoc* pDoc = GetDocument();
	ASSERT_VALID(pDoc);
	
	//======= Узнаем размер контейнера точек
	UINT nPoints = pDoc->m_Points.size();

	//======= Уходим, если он пуст
	if (!nPoints)
		return;
	
	// Сохраняем текущее состояние контекста (инструменты GDI)
	pDC->SaveDC();

	// Создаем перо Windows для прорисовки контура полигона
	CPen pen (PS_SOLID,2,RGB(0,96,0));

	//===== Выбираем его в контекст устройства
	pDC->SelectObject (&pen);
	
	//=== Создаем кисть Windows для заливки внутренних частей
	CBrush brush (RGB(240,255,250));
	pDC->SelectObject (&brush);

	//===== Изображаем полигон
	pDC->Polygon (&pDoc->m_Points[0], nPoints);
	
	// Восстанавливаем контекст (предыдущие инструменты GDI)
	pDC->RestoreDC(-1);
}


//====== Подключает часть определений STL
#include <vector>
//====== Задает область видимости имен STL
using namespace std;
