C++ 单个三维立方体的z_轴移动
我创建了一个沿z轴移动几个立方体的函数。我可以让所有的立方体同时移动并重复,但我试图让每个立方体独立移动。我的z轴功能是:C++ 单个三维立方体的z_轴移动,c++,opengl,3d,C++,Opengl,3d,我创建了一个沿z轴移动几个立方体的函数。我可以让所有的立方体同时移动并重复,但我试图让每个立方体独立移动。我的z轴功能是: void moveCubes() { cubeZ += 0.050f; if(cubeZ > 120) cubeZ -= 110.0f; glutPostRedisplay(); } void myDisplay() { glClearColor(0.0f, 0.0f, 0.0f, 0.0f); glClear(GL_COL
void moveCubes()
{
cubeZ += 0.050f;
if(cubeZ > 120)
cubeZ -= 110.0f;
glutPostRedisplay();
}
void myDisplay()
{
glClearColor(0.0f, 0.0f, 0.0f, 0.0f);
glClear(GL_COLOR_BUFFER_BIT);
for(int i = 0; i < maxCubes; i++)
{
glLoadIdentity();
glTranslatef(0.0f, 0.0f, -110);
glTranslatef(cubeOrigins[i].x, cubeOrigins[i].y, cubeZ);
glRotatef(rotateAxis, cubeOrigins[i].rotateX, cubeOrigins[i].rotateY, 0.0f);
drawCubes();
}
moveCubes();
glutSwapBuffers();
}
显示功能为:
void moveCubes()
{
cubeZ += 0.050f;
if(cubeZ > 120)
cubeZ -= 110.0f;
glutPostRedisplay();
}
void myDisplay()
{
glClearColor(0.0f, 0.0f, 0.0f, 0.0f);
glClear(GL_COLOR_BUFFER_BIT);
for(int i = 0; i < maxCubes; i++)
{
glLoadIdentity();
glTranslatef(0.0f, 0.0f, -110);
glTranslatef(cubeOrigins[i].x, cubeOrigins[i].y, cubeZ);
glRotatef(rotateAxis, cubeOrigins[i].rotateX, cubeOrigins[i].rotateY, 0.0f);
drawCubes();
}
moveCubes();
glutSwapBuffers();
}
立方几何体[i].x和.y是由rands()生成的。如果需要,我可以添加更多代码,但我相信这是重要的一部分。我希望有人能告诉我需要做什么。坦率地说,这是相当令人沮丧。非常感谢您的帮助。您已经为所有立方体硬编码了一个恒定的Z位置。您可能希望使用
cubeOrigins[i].z
。如果您的结构中没有这样的值,也许您应该(并将其随机化为与x和y值相同的值)
更新时:
void moveCubes() {
for( int i = 0; i < maxCubes; i++ ) {
cubeOrigins[i].z += 0.05f;
if( cubeOrigins[i].z > 120 )
cubeOrigins[i].z -= 110.0f;
}
glutPostRedisplay();
}
如果你想变得技术化,你可能还想随机化立方体的速度。因此,您可以创建一个浮点数数组来表示每个多维数据集的速度,并使用它来代替常量0.05f
速度