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);
}
我正在尝试降低 '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);
}