Open GL 2001 1351 2001 1354 2001 1358

  • Slides: 17
Download presentation
Open. GL 프로젝트 2001 1351 김병욱 2001 1354 김상진 2001 1358 김성환

Open. GL 프로젝트 2001 1351 김병욱 2001 1354 김상진 2001 1358 김성환

개발 환경 n Windows XP n Microsoft Visual C++ n Open. GL n Photoshop

개발 환경 n Windows XP n Microsoft Visual C++ n Open. GL n Photoshop CS

로봇 구현 void torso() //몸통 생성 { gl. Push. Matrix(); //x축 방향으로 -90도 회전

로봇 구현 void torso() //몸통 생성 { gl. Push. Matrix(); //x축 방향으로 -90도 회전 gl. Rotatef(-90. 0, 1. 0, 0. 0); //실린더로 위쪽이 약간 더 넓은 몸통을 만듧 glu. Cylinder(t, TORSO_RADIUS, (TORSO_RADIUS+ 0. 2), TORSO_HEIGHT, 10); gl. Pop. Matrix(); } void head() //머리 생성 { gl. Push. Matrix(); gl. Translatef(0. 0, 0. 5*HEAD_HEIGHT, 0. 0); gl. Scalef(HEAD_RADIUS, HEAD_HEIGHT, HEAD_RADIUS); glu. Sphere(h, 1. 0, 10); gl. Pop. Matrix(); }

로봇팔구현 void left_upper_arm() //왼쪽 윗팔 생성 { gl. Push. Matrix(); gl. Rotatef(20. 0, 1.

로봇팔구현 void left_upper_arm() //왼쪽 윗팔 생성 { gl. Push. Matrix(); gl. Rotatef(20. 0, 1. 0, 0. 0); glu. Cylinder(lua, UPPER_ARM_RADIUS, UPPER_ARM_HEIGHT, 10); gl. Pop. Matrix(); } void left_lower_arm() //왼쪽 아래팔 생성 { gl. Push. Matrix(); gl. Rotatef(20. 0, 1. 0, 0. 0); glu. Cylinder(lla, LOWER_ARM_RADIUS, LOWER_ARM_HEIGHT, 10); gl. Pop. Matrix(); } void right_upper_arm() //오른쪽 윗팔 생성 { gl. Push. Matrix(); gl. Rotatef(20. 0, 1. 0, 0. 0); glu. Cylinder(rua, UPPER_ARM_RADIUS, UPPER_ARM_HEIGHT, 10); gl. Pop. Matrix(); } void right_lower_arm() //오른쪽 아래팔 생성 { gl. Push. Matrix(); gl. Rotatef(20. 0, 1. 0, 0. 0); glu. Cylinder(rla, LOWER_ARM_RADIUS, LOWER_ARM_HEIGHT, 10); gl. Pop. Matrix(); }

로봇다리구현 void left_upper_leg() //왼쪽 윗다리 생성 { gl. Push. Matrix(); gl. Rotatef(-90. 0, 1.

로봇다리구현 void left_upper_leg() //왼쪽 윗다리 생성 { gl. Push. Matrix(); gl. Rotatef(-90. 0, 1. 0, 0. 0); glu. Cylinder(lul, UPPER_LEG_RADIUS, UPPER_LEG_HEIGHT, 10); gl. Pop. Matrix(); } void left_lower_leg() //왼쪽 아래다리 생성 { gl. Push. Matrix(); gl. Rotatef(-60. 0, 1. 0, 0. 0); glu. Cylinder(lll, LOWER_LEG_RADIUS, LOWER_LEG_HEIGHT, 10); gl. Pop. Matrix(); } void right_upper_leg() //오른쪽 윗다리 생성 { gl. Push. Matrix(); gl. Rotatef(-90. 0, 1. 0, 0. 0); glu. Cylinder(rul, UPPER_LEG_RADIUS, UPPER_LEG_HEIGHT, 10); gl. Pop. Matrix(); } void right_lower_leg() //오른쪽 아래다리 생 성 { gl. Push. Matrix(); gl. Rotatef(-60. 0, 1. 0, 0. 0); glu. Cylinder(rll , LOWER_LEG_RADIUS, LOWER_LEG_HEIGHT, 10); gl. Pop. Matrix(); }

자전거 구현 void bicycle_upper() //자전거 윗쪽 차체 생성 { gl. Push. Matrix(); gl. Rotatef(0.

자전거 구현 void bicycle_upper() //자전거 윗쪽 차체 생성 { gl. Push. Matrix(); gl. Rotatef(0. 0, 0. 0); glu. Cylinder(bu, BICYCLE_RADIUS, BICYCLE_UPPER_HEIGH T, 10); gl. Pop. Matrix(); } void bicycle_front() //자전거 앞쪽 차체 생성 { gl. Push. Matrix(); //핸들과 앞바퀴를 연결해 주는 차체를 x축 방향으로 65도 기울여서 생성 gl. Rotatef(65. 0, 1. 0, 0. 0); glu. Cylinder(bf, BICYCLE_RADIUS, BICYCLE_FRONT_HEIGH T, 10); gl. Pop. Matrix(); } void bicycle_handle() //자전거 핸들 생성 { gl. Push. Matrix(); gl. Rotatef(90. 0, 1. 0, 0. 0); glu. Cylinder(bf, BICYCLE_RADIUS, BICYCLE_HANDLE_HEI GHT, 10); gl. Pop. Matrix(); } void bicycle_lower 1() //자전거 아래쪽 앞부 분 차체 생성 { gl. Push. Matrix(); gl. Rotatef(-30. 0, 1. 0, 0. 0); glu. Cylinder(bl 1, BICYCLE_RADIUS, BICYCLE_UPPER_HEIGH T, 10); gl. Pop. Matrix(); }

자전거 구현 void bicycle_lower 2() //자전거 아래쪽 뒷부 분 차체 생성 { gl. Push.

자전거 구현 void bicycle_lower 2() //자전거 아래쪽 뒷부 분 차체 생성 { gl. Push. Matrix(); gl. Rotatef(0. 0, 0. 0); glu. Cylinder(bl 2, BICYCLE_RADIUS, BICYCLE_UPPER_HEIGH T, 10); gl. Pop. Matrix(); } void bicycle_back() //자전거 뒷쪽 차체 생성 { gl. Push. Matrix(); gl. Rotatef(-30. 0, 1. 0, 0. 0); glu. Cylinder(bb, BICYCLE_RADIUS, BICYCLE_UPPER_HEIGH T, 10); gl. Pop. Matrix(); } void bicycle_seat() //자전거 안장 생성 { gl. Push. Matrix(); gl. Rotatef(-90. 0, 1. 0, 0. 0); glu. Cylinder(bs, BICYCLE_SEAT_RADIUS, BICYCLE_SEAT_HEIGHT, 10); gl. Pop. Matrix(); } void right_pedal_bar() //자전거 오른쪽 페달 기둥 생성 { gl. Push. Matrix(); gl. Rotatef(-75. 0, 1. 0, 0. 0); glu. Cylinder(rpb, PEDAL_BAR_RADIUS, PEDAL_BAR_HEIGHT, 10); gl. Pop. Matrix(); }

자전거 구현 void right_pedal() //자전거 오른쪽 페달 생성 { gl. Push. Matrix (); gl.

자전거 구현 void right_pedal() //자전거 오른쪽 페달 생성 { gl. Push. Matrix (); gl. Push. Matrix(); gl. Rotatef(90. 0, 1. 0, 0. 0); glu. Cylinder(rp, , PEDAL_RADIUS, PEDAL_HEIGHT, 10); gl. Pop. Matrix (); gl. Pop. Matrix(); } void left_pedal_bar() //자전거 왼쪽 페달 기둥 생성 { gl. Push. Matrix (); gl. Push. Matrix(); gl. Rotatef(-75. 0, 1. 0, 0. 0); glu. Cylinder(lpb, , PEDAL_BAR_RADIUS, PEDAL_BAR_HEIGHT, 10); gl. Pop. Matrix (); gl. Pop. Matrix(); } void left_pedal() //자전거 왼쪽 페달 생성 { gl. Push. Matrix (); gl. Push. Matrix(); gl. Rotatef(90. 0, 1. 0, 0. 0); glu. Cylinder(lp, , PEDAL_RADIUS, PEDAL_HEIGHT, 10); gl. Pop. Matrix (); gl. Pop. Matrix(); }

소스구현 void mouse(int btn, int state, int x, int y) { if(btn==GLUT_LEFT_BUTTON && state

소스구현 void mouse(int btn, int state, int x, int y) { if(btn==GLUT_LEFT_BUTTON && state == GLUT_DOWN) { theta[angle] += 5. 0; if( theta[angle] > 360. 0 ) theta[angle] -= 360. 0; } if(btn==GLUT_RIGHT_BUTTON && state == GLUT_DOWN) { theta[angle] -= 5. 0; if( theta[angle] < 360. 0 ) theta[angle] += 360. 0; } display(); } void my. Reshape(int w, int h) { gl. Viewport(0, 0, w, h); //시역 조절 //절단 상자 조절 gl. Matrix. Mode(GL_PROJECTION); gl. Load. Identity(); if (w <= h) gl. Ortho(-10. 0, -10. 0 * (GLfloat) h / (GLfloat) w, -10. 0, 10. 0); else gl. Ortho(-10. 0 * (GLfloat) w / (GLfloat) h, 0. 0, 10. 0, -10. 0, 10. 0); gl. Matrix. Mode(GL_MODELVIEW); gl. Load. Identity(); }

소스구현 void main(int argc, char **argv) { glut. Init(&argc, argv); glut. Init. Display. Mode(GLUT_DOUBLE

소스구현 void main(int argc, char **argv) { glut. Init(&argc, argv); glut. Init. Display. Mode(GLUT_DOUBLE | GLUT_RGB | GLUT_DEPTH); glut. Init. Window. Size(600, 600); //600 by 600 크기의 윈도우 생성 glut. Create. Window("bicycles-robot"); //윈도우 상단에 bicycle-robot이란 이 름의 title생성 myinit(); glut. Reshape. Func(my. Reshape); glut. Idle. Func(idle); glut. Display. Func(display); glut. Mouse. Func(mouse); } //메뉴 생성 glut. Create. Menu(menu); glut. Add. Menu. Entry("torso", 0); glut. Add. Menu. Entry(“head 1", 1); glut. Add. Menu. Entry(“head 2", 2); glut. Add. Menu. Entry("right_upper_arm", 3); glut. Add. Menu. Entry("right_lower_arm", 4); glut. Add. Menu. Entry("left_upper_arm", 5); glut. Add. Menu. Entry("left_lower_arm", 6); glut. Add. Menu. Entry("right_upper_leg", 7); glut. Add. Menu. Entry("right_lower_leg", 8); glut. Add. Menu. Entry("left_upper_leg", 9); glut. Add. Menu. Entry("left_lower_leg", 10); glut. Add. Menu. Entry("quit", 11); glut. Attach. Menu(GLUT_LEFT_BUTTON); glut. Main. Loop(); }