OpenGL翻译

时间:2015-10-15 13:10:47

标签: c opengl

我正试图在沿y轴向下移动的物体上进行平移。但物体没有沿y轴移动。它保持在我设定为1.0f的初始位置。我可以知道这是什么问题吗?我该如何解决?

这是我的代码:

void balls () {
glTranslatef(0.0f, ball, 0.0f);
glBegin(GL_TRIANGLE_FAN);
  glColor3f(0.0f, 0.0f, 1.0f);  // Blue
  glVertex2f(0.0f, 0.0f);       // Center of circle
  int numSegments = 100;
  GLfloat angle;
  for (int i = 0; i <= numSegments; i++) { // Last vertex same as first     vertex
     angle = i * 2.0f * PI / numSegments;  // 360 deg for all segments
     glVertex2f(cos(angle) * ballRadius, sin(angle) * ballRadius);
  }
glEnd();

ball -= ySpeed; //move down

if (ball > -1.5f) {
    ball = 1.0f;
}
glutPostRedisplay();
}

1 个答案:

答案 0 :(得分:1)

您从ball = 1开始:

GLfloat ball = 1.0f; //position

然后递减0.01

GLfloat ySpeed = 0.010f;
ball -= ySpeed; //move down

这给了我们ball == 0.99。然后你这样做:

if (ball > -1.5f) {
    ball = 1.0f;
}

0.99 > -1.5起,ball重置为1。冲洗并重复。

要解决这个问题,您的比较应该反映您正在进行的操作(减法):

if (ball < -1.5f) { 
    ball = 1.0f;
}

ySpeed开始减去 ball它低于 -1.5