Я пытаюсь создать губку Менгера для задания,
изображение губки Мегера из Википедии
и на данный момент у меня есть куб 3*3*3 кубиков. Я сейчас пытаюсь удалить правильные блоки, чтобы сформировать первую итерацию фрактала. Каждому из 27 блоков я дал индекс, начинающийся с 0 (blockNumber в моем коде). Блок, который я должен удалить, содержится в моем массиве skipHere[]. 4 удаляется первым, потому что это средний блок первой строки.
Однако этот код по-прежнему распечатывает полную структуру 3*3*3, не пропуская ни одного блока, который я пытаюсь пропустить. Итак, я думаю, что неправильно перебираю массив skipHere[], но у меня возникают проблемы с поиском моей логической ошибки.
void display()
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glEnable(GL_DEPTH_TEST);
UpdateTransform(0,0,0);
int skipHere[7] = {4, 10, 12, 13, 14, 16, 22};
int blockNumber = 0;
bool skip = false;
int x = 0;
int y = 0;
int z = 0;
float Xres = 0;
float Yres = 0;
float Zres = 0;
for(x = 0;x < 3; ++x)
{
for(y = 0; y < 3; ++y)
{
for(z = 0; z < 3; ++z)
{
for(int i = 0; i < 7; i++)
{
if(blockNumber == skipHere[i])
{
skip = true;
}
if(skip == false)
{
glPushMatrix();
UpdateTransform(Xres,Yres,Zres);
drawOneCube();
glPopMatrix();
}
skip = false;
}
Zres -= 1.1;
blockNumber += 1;
}
Yres += 1.1;
Zres = 0;
}
Xres += 1.1;
Yres = 0;
}
glutSwapBuffers();
}