我正在使用Processing 3D开发Rubik Cube。在leftUp()
函数中,我旋转左(蓝色)面,并相应地移动正方形。每个面孔都是一个阶级,每个正方形也是一个阶级。
问题是,当我在脸上调用rotateLeft
函数时,某些正方形变为空。
我曾尝试使用图形转换对其进行调试,但发现每次旋转时,某些正方形会自行堆叠。
这是显示面孔的代码:
void show()
{
int count = 0;
for( Square sq: squares)
{
pushMatrix();
translate(translates[0]+count, translates[1], translates[2]);
//count+=20;
rotateX(angles[0]);
rotateY(angles[1]);
rotateZ(angles[2]);
sq.show();
popMatrix();
}
}
广场表演的代码:
void show()
{
pushMatrix();
fill(colour[0],colour[1],colour[2]);
beginShape();
vertex(x1,y1);
vertex(x2,y1);
vertex(x2,y2);
vertex(x1,y2);
endShape(CLOSE);
popMatrix();
}
leftUp和rotateTop的代码:
void leftUp()
{
faces[2].rotateLeft(1);
for(int i = 0; i < 3; i++)
{
Square temp = faces[3].squares[i*3];
faces[3].squares[i*3] = faces[0].squares[i*3];
faces[0].squares[i*3] = faces[5].squares[i*3];
faces[5].squares[i*3] = faces[4].squares[i*3];
faces[4].squares[i*3] = temp;
}
}
void rotateTop()
{
faces[3].rotateLeft(0);
for(int i = 0; i < 3; i++)
{
Square temp = faces[1].squares[i];
faces[1].squares[i] = faces[4].squares[i];
faces[4].squares[i] = faces[2].squares[i];
faces[2].squares[i] = faces[0].squares[i];
faces[0].squares[i] = temp;
}
}
Face的rotateLeft
函数:
void rotateLeft(int temper)
{
Square[] temp = new Square[9];
for(int i = 0; i < 3; i++)
{
for(int j = 0; j < 3; j++)
{
temp[3*i+j] = squares[(2-i)*3+j];
int[] tem = {i*100,0,0};
//if(temper==1) temp[3*i+j].colour = tem;
}
}
for(int i = 0; i < temp.length; i++)
{
squares[i] = temp[i];
println(faces[2].squares[i].colour);
}
}
当我先致电leftUp
,然后再致电rotateTop
时,反之亦然。可能是什么问题?
问题多维数据集:
您可以看到左侧的底部底部缺少3个正方形。