static const float pi = 3.14159265359;
//cos函数和sin函数的参数传递的是弧度,所以要把角度转换成弧度。
//正五边形需要计算的角度。
static const float fcos18 = cos((float)18/180*pi);
static const float fsin18 = sin((float)18/180*pi);
static const float fcos54 = cos((float)54/180*pi);
static const float fsin54 = sin((float)54/180*pi);
//正六边形需要计算的角度。
static const float fcos30 = cos((float)30/180*pi);
static const float fsin30 = sin((float)30/180*pi);
//正五边形和正六边形均需要计算的角度
static const float fcos90 = cos((float)90/180*pi);
static const float fsin90 = sin((float)90/180*pi);
//fR代表“外接圆半径”
//x向右为正(右边),反向为负(左边)
//y向下为正(下边),反向为负(上边)
//正五边形顶点画法
m_point[0].m_fx = fR*fcos18+m_point[8].m_fx;
m_point[0].m_fy = fR*(-fsin18)+m_point[8].m_fy;
m_point[1].m_fx = fR*fcos90+m_point[8].m_fx;
m_point[1].m_fy = fR*(-fsin90)+m_point[8].m_fy;
m_point[2].m_fx = fR*(-fcos18)+m_point[8].m_fx;
m_point[2].m_fy = fR*(-fsin18)+m_point[8].m_fy;
m_point[3].m_fx = fR*(-fcos54)+m_point[8].m_fx;
m_point[3].m_fy = fR*(fsin54)+m_point[8].m_fy;
m_point[4].m_fx = fR*(fcos54)+m_point[8].m_fx;
m_point[4].m_fy = fR*(fsin54)+m_point[8].m_fy;
int iStar = 5;
//正六边形顶点画法
m_point[0].m_fx = fR*fcos30+m_point[8].m_fx;
m_point[0].m_fy = fR*(-fsin30)+m_point[8].m_fy;
m_point[1].m_fx = fR*fcos90+m_point[8].m_fx;
m_point[1].m_fy = fR*(-fsin90)+m_point[8].m_fy;
m_point[2].m_fx = fR*(-fcos30)+m_point[8].m_fx;
m_point[2].m_fy = fR*(-fsin30)+m_point[8].m_fy;
m_point[3].m_fx = fR*(-fcos30)+m_point[8].m_fx;
m_point[3].m_fy = fR*(fsin30)+m_point[8].m_fy;
m_point[4].m_fx = fR*(fcos90)+m_point[8].m_fx;
m_point[4].m_fy = fR*(fsin90)+m_point[8].m_fy;
m_point[5].m_fx = fR*(fcos30)+m_point[8].m_fx;
m_point[5].m_fy = fR*(fsin30)+m_point[8].m_fy;
int iStar = 6;
//伪代码做顶点连线
for (int i=0;i<iStar;++i)
{
line(m_point[8].m_fx,m_point[8].m_fy,m_point[i].m_fx,m_point[i].m_fy);
if (i == (iStar-1))
{
line(m_point[i].m_fx,m_point[i].m_fy,m_point[0].m_fx,m_point[0].m_fy);
return ;
}
else
line(m_point[i].m_fx,m_point[i].m_fy,m_point[i+1].m_fx,m_point[i+1].m_fy);
}