我正在使用递归方式制作Sierpinski地毯。 在亚麻的DrawCarpet函数中,我在其中重新定义一个值,但出现错误“到许多初始化器值”。有人知道我在做什么错吗?
typedef float point[2];
float x = 100;
float y = 100;
point a = { x , y };
int grade = 4;
void DrawCarpet(point a, GLfloat width, GLfloat grade)
{
if(grade>0)
{
width = width / 3;
DrawCarpet(a, width, grade - 1);
a = { x - width , y };
DrawCarpet(a, width, grade - 1);
a = { x - 2*width , y };
DrawCarpet(a, width, grade - 1);
a = { x , y-width };
DrawCarpet(a, width, grade - 1);
a = { x , y-2*width };
DrawCarpet(a, width, grade - 1);
a = { x - width , y-width };
DrawCarpet(a, width, grade - 1);
a = { x - width , y -2*width };
DrawCarpet(a, width, grade - 1);
a = { x -2* width , y -2*width };
DrawCarpet(a, width, grade - 1);
a = { x,y };
}
}
答案 0 :(得分:1)
参数a
的类型不是 2 float
的数组,而是float*
(由于array to pointer decay的原因,也因为您的函数参数遮盖全局变量)。因此,您要尝试的是为指针变量分配两个值。尝试使用具有两个成员作为点类型的结构,如果要分配给它,则通过引用将其传递。