2021年5月26日 星期三

Jain's 圖學筆記 #week14

 steap1

程式碼:

#include <GL/glut.h>
void display()
{
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
    ///glutSolidSphere(0.3, 30, 30);///實心圓///範例偷來ㄉ
    glutWireSphere(0.3, 30, 30);///切線圓///範例偷來ㄉ
    glutSwapBuffers();
}
int main( int argc, char**argv)
{
    glutInit( &argc, argv );
    glutInitDisplayMode( GLUT_DOUBLE | GLUT_DEPTH );
    glutCreateWindow("08160333");
    glutDisplayFunc(display);
    glutMainLoop();
}

執行成果:











steap2

timmer

程式碼:

#include <GL/glut.h>
void display()
{
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
    ///glutSolidSphere(0.3, 30, 30);///實心圓
    glutWireSphere(0.3, 30, 30);///切線圓
    glutSwapBuffers();
}
void timer(int t)///timer響起時, 做你要做的事
{
    glClearColor( 1, 0, 0, 0 );///清背景色:紅色
    display();///重製畫面
}
int main( int argc, char**argv)
{
    glutInit( &argc, argv );
    glutInitDisplayMode( GLUT_DOUBLE | GLUT_DEPTH );
    glutCreateWindow("08160333");
    glutDisplayFunc(display);
    glutTimerFunc( 3000 , timer , 0 );

    glutMainLoop();

}











steap3
設定3秒開始旋轉

#include <GL/glut.h>
float angle=0;
void display()
{
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
    glPushMatrix();
        glRotatef( angle, 0, 0, 1 );
        glutSolidCube( 0.3 );
    glPopMatrix();
    glutSwapBuffers();
}
void timer(int t)
///timer響起時, 做你要做的事 (鬧鐘)
{
    glutTimerFunc( 300, timer, t+1 ); ///起床第一件事, 先設定新鬧鐘
    glClearColor( 1, 0, 0, 0 );///清背景色:紅色
    angle++;
    display();///重製畫面
}
int main(int argc, char**argv)
{
    glutInit( &argc, argv );
    glutInitDisplayMode( GLUT_DOUBLE | GLUT_DEPTH );
    glutCreateWindow("08160333");

    glutDisplayFunc(display);
    glutTimerFunc( 3000 , timer , 0 );
    glutMainLoop();
}











steap4轉完左邊轉右邊
程式碼:
#include <GL/glut.h>]
float angle=0;
void display()
{
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
    glPushMatrix();
        glRotatef( angle, 0, 0, 1 );
        glutSolidCube( 0.3 );
    glPopMatrix();
    glutSwapBuffers();
}
int diff=2;
void timer(int t){
    glutTimerFunc(30, timer, t+1);
    glClearColor(1, 0, 0, 0);
    if(angle>90) diff=-2;
    if(angle<0) diff=+2;
    angle += diff;
    display();
}
int main( int argc, char**argv)
{
    glutInit( &argc, argv );
    glutInitDisplayMode( GLUT_DOUBLE | GLUT_DEPTH );
    glutCreateWindow("08160333");
    glutDisplayFunc(display);
     glutTimerFunc( 3000 , timer , 0 );

    glutMainLoop();

}


沒有留言:

張貼留言

距地表面160 Week11

 #include "glm.h" GLMmodel* pmodel = NULL; void drawmodel(void) {     if (!pmodel) { pmodel = glmReadOBJ("data/porsche.obj...