查找正多边形的顶点

时间:2011-06-21 18:06:38

标签: c++ algorithm math geometry polygon

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

#define DOUBLE(a) ((a)*(a))

...

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;

2 个答案:

答案 0 :(得分:8)

角度计算出现错误。

每个顶点之间的角度应为2 * M_PI / vertices

显然是你的宏:

#define DOUBLE(a) ((a)*(a))

不正确。

然而,在C ++中,你真的不应该使用宏进行这样的微不足道的操作 - 它最多应该是内联函数,或者只是上面给出的直接公式。

答案 1 :(得分:1)

尝试

#define DOUBLE(a) ((a) + (a))

#define DOUBLE(a) (2 * (a))

您正在以虚假身份定义SQUARE(a)。