-static void xlogo()
-{
- glPushMatrix();
-
- glPopMatrix();
-}
-
-static void update_anim(long tmsec)
-{
- static float beam_start_time;
- static float beam_stop_interval;
-
- float tsec = (float)tmsec / 1000.0;
- float tanim = tsec * anim_speed;
-
- if(state == ST_CAM_WAIT) {
- if(beam_angle >= BEAM_START_ANGLE && prev_beam_angle < BEAM_START_ANGLE) {
- state = ST_CAM_STOP;
- printf("func: %s\n", __func__);
- printf("state from wait to stop (ba: %f)\n", beam_angle);
- beam_start_time = tmsec;
- beam_stop_interval = beam_angle / beam_speed; // 400 / beam_speed;
- printf(" stop interval: %f\n", beam_stop_interval);
- }
- }
- if(state == ST_CAM_STOP) {
- float t = smoothstep(beam_start_time, beam_start_time + beam_stop_interval, tmsec);
- prev_beam_angle = beam_angle;
- beam_angle = BEAM_START_ANGLE + (BEAM_STOP_ANGLE - BEAM_START_ANGLE) * t;
-
- if(t >= 1) {
- printf("state from stop to xlogo\n");
- state = ST_XLOGO;
- }
- } else if(state == ST_XLOGO) {
-
- } else {
- prev_beam_angle = beam_angle;
- beam_angle = fmod(tanim * beam_speed * 360, 360.0);
- }
-}
-
-static void display()
-{
- if(anim_stop_time > 0) {
- tmsec = anim_stop_time - start_time;
- } else {
- tmsec = (long)glutGet(GLUT_ELAPSED_TIME) - start_time;
- }
-
- update_anim(tmsec);
-
- glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
- backdrop();