2023年3月2日 星期四

week03 用mouse寫作業

 week 03

第一堂課

前往https://jsyeh.org/3dcg10//
下載deta win32
解壓後把deta加進windows






第2堂課

創立一個GLUT專案,把原本的170行程式刪掉,並將上周的10行程式貼上

#include <GL/glut.h>

void dispaly()

{

 glutSolidTeapot( 0.3 );

 glutSwapBuffers();

}

int main(int argc, char* argv[])

{

  glutInit(&argc, argv);

  glutInitDisplayMode(GLUT_RGB|GLUT_DOUBLE|GLUT_DEPTH);

  glutCreateWindow("week03");

 

  glutDisplayFunc(dispaly);

  glutMainLoop();

}

    



移動(增加程式碼)
{
 glPushMatrix();
 glTranslatef( 0.5, 0.5, 0);
 glutSolidTeapot( 0.3 );
 glPopMatrix();
 glutSwapBuffers();
}


第3堂課

開一個新的project week03-2_translate_mouse
把剛剛的專案程式貼上

用滑鼠移動
#include <GL/glut.h>
float X=0, Y=0, Z=0;
void dispaly()
{
 glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT );
 glPushMatrix();
 glTranslatef( X, Y, Z );
 glutSolidTeapot( 0.3 );
 glPopMatrix();
 glutSwapBuffers();
}
void mouse( int button, int state, int x, int y )
{
    X = (x-150)/150.0;
    Y = -(y-150)/150.0;

}

int main(int argc, char* argv[])
{
  glutInit(&argc, argv);
  glutInitDisplayMode(GLUT_RGB|GLUT_DOUBLE|GLUT_DEPTH);
  glutCreateWindow("week03");
  glutMouseFunc(mouse);
  glutDisplayFunc(dispaly);
  glutMainLoop();
}




開新專案Project week03-3_homework

老師的範例


#include <GL/glut.h>
#include <stdio.h>
float X=0, Y=0, Z=0;
void dispaly()
{
 glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT );

 glutSwapBuffers();
}
void mouse( int button, int state, int x, int y )
{
    X = (x-150)/150.0;
    Y = -(y-150)/150.0;
if(state==GLUT_DOWN) printf("    glVertex2f(%.2f, %.2f);\n", x, y);
}

int main(int argc, char* argv[])
{
  glutInit(&argc, argv);
  glutInitDisplayMode(GLUT_RGB|GLUT_DOUBLE|GLUT_DEPTH);
  glutCreateWindow("week03");
  glutMouseFunc(mouse);
  glutDisplayFunc(dispaly);
  glutMainLoop();
}
    




沒有留言:

張貼留言