查找规则多边形的顶点

Find regular polygon's vertices

本文关键字:顶点 多边形 规则 查找      更新时间:2023-10-16

我有一些由用户定义的属性,然后我想用它们自动生成一个正多边形。属性包括中心x、中心y、半径和顶点数。我想知道如何计算正多边形所有顶点的x和y坐标。我已经尝试过计算正多边形的坐标';s顶点讨论。但它总是给我错误的坐标。我当前的代码如下(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 * M_PI / vertices

显然你的宏:

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

不正确。

然而,在C++中,你真的不应该用宏来进行这种琐碎的操作——它最多应该是一个内联函数,或者只是上面给出的直接公式。

尝试

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

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

你在一个错误的身份下定义SQUARE(a)。