原理:任意正多边形都是圆的内接多边形,顶点都在它的外接圆上,而且正多边形的顶点在圆上是均匀分布的。
以下先给出单位圆的任意内接正多边形的实现:
void GetRegPolygon(POINT *pHead,int n)
{
int i(0);
for (i=0;i<n;i++)
{
pHead[i].x = cos((double)(i)/(double)n*PI);
pHead[i].y = sin((double)(i)/(double)n*PI);
}
}
任意位置的正多边形可以通过设置多边形的中心点坐标和它的外接圆半径求得:
void GetRegPolygon(POINT *pHead,int n,POINT circle,double r)
{
int i(0);
for (i=0;i<n;i++)
{
pHead[i].x = circle.x + r * cos((double)(i)/(double)n);
pHead[i].y = circle.y + r * sin((double)(i)/(double)n);