OpenGL反向移动

OpenGL reverse movement

我正在尝试降低 'left_eye_b' 和 'left_eye_b' 的值,然后再次增加这些值以模拟我在 OpenGL 上制作的人类的眨眼。

我在这里创建了眼睛:

left_eye_b=10.0;
left_eye_s=10.0;
    glColor3f(1.0f, 1.0f, 0.0f);
    glBegin(GL_POLYGON);
    for (float i = 0; i <= (2 * p); i += 0.001) {           // Left Eye Inside
        x = 10.0 * cos(i) - 24.56;
        y = left_eye_s * sin(i) + 56.45;
        glVertex2f(x, y);
    }
    glEnd();

    glColor3f(0.0f, 0.0f, 0.0f);
    glPointSize(2);
    glBegin(GL_POINTS);
    for (float i = 0; i <= (2 * p); i += 0.001) {           // Left Eye Border
        x = 10.0 * cos(i) - 24.56;
        y = left_eye_b * sin(i) + 56.45;
        glVertex2f(x, y);
    }
    glEnd();

这是我试图使眼睛眨眼的地方:

void timer(int a) {
    /// Simulating Wink
    if (left_eye_b >= 1.12)
        left_eye_b -= 0.1;          // Eye Close
    if (left_eye_s >= 1.12)
        left_eye_s -= 0.1;
    glutTimerFunc(10, timer, 1);
    if (left_eye_b <= 10.0)
        left_eye_b += 0.1;          // Eye Open
    if (left_eye_s <= 10.0)
        left_eye_s += 0.1;

    glutPostRedisplay();
    glutTimerFunc(10, timer, 1);

}

问题陈述: 如果我删除 'eye open' 部分,我会完美地工作并且闭上眼睛。 但是,我想使用 'Eye Open' 部分来增加值 过几秒再睁眼

关于如何实现的任何建议?

添加一个变量,指示眼睛是睁开还是闭上。变量值为1.0开仓-1.0收仓:

double eye_change = -1.0;

当exe打开或关闭时更改变量的符号:

void timer(int a) {

    left_eye_b += 0.1 * eye_change; 
    left_eye_s += 0.1 * eye_change; 

    if (left_eye_b <= 1.12)
        eye_change = 1.0;
    if (left_eye_b >= 10.0)
        eye_change = -1.0;

    glutPostRedisplay();
    glutTimerFunc(10, timer, 1);
}