查找正多边形的顶点

Wan*_*lva 0 c++ algorithm math geometry polygon

我有一些用户定义的属性,然后我想用它们自动生成一个正多边形.属性是中心x,中心y,半径和顶点数.我想知道如何计算正多边形的所有顶点的x和y坐标.我已经尝试过计算正多边形顶点讨论的坐标.但它总是给我错误的坐标.我目前的代码如下(C++):

#define DOUBLE(a) ((a)*(a))
Run Code Online (Sandbox Code Playgroud)

...

if(radius <= 0 || vertices < 3)
  return NULL;

Polygon* poly = new Polygon;

double angle = DOUBLE(M_PI) / vertices;

for(long i = 0; i < vertices; i++)
{
  double a = (angle * i);

  poly->add(centerX + radius * cos(a), centerY + radius * sin(a));
}

return poly;
Run Code Online (Sandbox Code Playgroud)

Aln*_*tak 8

角度计算出错.

每个顶点之间的角度应该是2 * M_PI / vertices.

显然你的宏:

#define DOUBLE(a) ((a)*(a))
Run Code Online (Sandbox Code Playgroud)

是不正确的.

但是在C++中,你真的不应该使用宏进行这种简单的操作 - 它最多应该是内联函数,或者只是上面给出的直接公式.