計時器
開啟CodeBlocks
茶壺
#include <GL/glut.h>
void display()
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glutSolidTeapot( 0.3 );
glutSwapBuffers();
}
int main(int argc, char**argv)
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_DOUBLE | GLUT_DEPTH);
glutInitWindowSize(500,500);
glutCreateWindow("Week 14");
glutDisplayFunc(display);
glutMainLoop();
}
播放出聲音
#include <GL/glut.h>
#include <mmsystem.h>///Now (1)
void display()
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glutSolidTeapot( 0.3 );
glutSwapBuffers();
}
int main(int argc, char**argv)
{
PlaySoundA("fart.wav", NULL, SND_ASYNC);///Now (2)
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_DOUBLE | GLUT_DEPTH);
glutInitWindowSize(500,500);///變大了
glutCreateWindow("week 14 timer");
glutDisplayFunc(display);
glutMainLoop();
}
#include <GL/glut.h>
#include <mmsystem.h>///Now (1)
float angle=0;
void display()
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glPushMatrix();
glRotatef(angle, 0,0,1);
glutSolidTeapot( 0.3 );
glPopMatrix();
glutSwapBuffers();
}
void timer(int t)///NOW timer!!!!
{
/// 1000 ms = 1 sec, 30 ms = 1/33 sec , 33 fps
glutTimerFunc(30, timer, t+1 );///NOW timer!!!! 起床要播下一個鬧鐘
angle += 1;
glutPostRedisplay();///系統重繪畫面
}
int main(int argc, char**argv)
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_DOUBLE | GLUT_DEPTH);
glutInitWindowSize(500,500);///變大了
glutCreateWindow("week 14 timer");
glutDisplayFunc(display);
glutTimerFunc(3000, timer, 0);///NOW timer!!!!
glutMainLoop();
}
3秒後叫 (1000=1秒)
#include <GL/glut.h>
#include <mmsystem.h>///Now (1)
void display()
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glutSolidTeapot( 0.3 );
glutSwapBuffers();
}
void timer(int t)///NOW timer!!!!
{
PlaySoundA("fart.wav", NULL, SND_ASYNC);///Now (2) ///NOW timer!!!!
}
int main(int argc, char**argv)
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_DOUBLE | GLUT_DEPTH);
glutInitWindowSize(500,500);///變大了
glutCreateWindow("week 14 timer");
glutDisplayFunc(display);
glutTimerFunc(3000, timer, 0);///NOW timer!!!!
glutMainLoop();
}
隔一秒就響(重複)
#include <GL/glut.h>
#include <mmsystem.h>///Now (1)
#include <stdio.h>///printf()
void display()
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glutSolidTeapot( 0.3 );
glutSwapBuffers();
}
void timer(int t)///NOW timer!!!!
{
glutTimerFunc(1000, timer, t+1 );///NOW timer!!!! 起床要播下一個鬧鐘
printf("timer(t) 的 t是 %d\n", t);///順便印一下現在的t是多少
PlaySoundA("thwap2.wav", NULL, SND_ASYNC);///Now (2) ///NOW timer!!!!
}
int main(int argc, char**argv)
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_DOUBLE | GLUT_DEPTH);
glutInitWindowSize(500,500);///變大了
glutCreateWindow("week 14 timer");
glutDisplayFunc(display);
glutTimerFunc(3000, timer, 0);///NOW timer!!!!
glutMainLoop();
}
*記得聲音檔放freeglt-bin裡
內叉公式
舊的插入新的
#include <GL/glut.h>
#include <mmsystem.h>///Now (1)
float angle=0;
float nowX=0;///NOW2
void display()
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glPushMatrix();
///glRotatef(angle, 0,0,1);
glTranslatef(nowX, 0, 0);///NOW2
glutSolidTeapot( 0.3 );
glPopMatrix();
glutSwapBuffers();
}
void timer(int t)///NOW timer!!!!
{
/// 1000 ms = 1 sec, 30 ms = 1/33 sec , 33 fps
glutTimerFunc(30, timer, t+1 );///NOW timer!!!! 起床要播下一個鬧鐘
float alpha = (t%33) / 33.0;///NOW2 alpha 內插
nowX = alpha* 1 + (1-alpha)* -1 ;///NOW2
angle += 1;
glutPostRedisplay();///系統重繪畫面
}
int main(int argc, char**argv)
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_DOUBLE | GLUT_DEPTH);
glutInitWindowSize(500,500);///變大了
glutCreateWindow("week 14 timer");
glutDisplayFunc(display);
glutTimerFunc(1000, timer, 0);///NOW timer!!!!
glutMainLoop();
}
動畫
開雲端看~~
https://drive.google.com/file/d/1cRXYdEyC_OVUn29BpKph0wak_bu4hldc/view?usp=sharing
https://drive.google.com/file/d/1klmxEjC711AQqNS2ibh64jp6PM2rdIzn/view?usp=sharing
https://drive.google.com/file/d/1KzdBEK5cOUpQdyV0Wn07C3glv7Ey6AxL/view?usp=sharing
https://drive.google.com/file/d/1__5ClImiV1YBKt5_5ASbPuJBv6hMSA2E/view?usp=sharing
w記憶動作(放在motion)r執行
另外3.4是按p.t執行
沒有留言:
張貼留言