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)
角度计算出错.
每个顶点之间的角度应该是2 * M_PI / vertices.
显然你的宏:
#define DOUBLE(a) ((a)*(a))
Run Code Online (Sandbox Code Playgroud)
是不正确的.
但是在C++中,你真的不应该使用宏进行这种简单的操作 - 它最多应该是内联函数,或者只是上面给出的直接公式.