• 검색 결과가 없습니다.

OpenGL OpenGL 프로젝프로젝트트

N/A
N/A
Protected

Academic year: 2023

Share "OpenGL OpenGL 프로젝프로젝트트"

Copied!
17
0
0

로드 중.... (전체 텍스트 보기)

전체 글

(1)

OpenGL

OpenGL 프로젝 프로젝 트 트

2001 1351

2001 1351 김병욱 김병욱 2001 1354

2001 1354 김상진 김상진 2001 1358

2001 1358 김성환 김성환

(2)

개 요 개 요

 팀 명 팀 명 : A+ : A+ 불가 불가

 팀원 수 팀원 수 : 3 : 3 명 명

 목적 목적 : : 수업시간에 배운 내용을 바탕으로 수업시간에 배운 내용을 바탕으로 팀 프로젝트를 수행함으로써

팀 프로젝트를 수행함으로써 OpenGL OpenGL 에 에 대한 자신감과 성취감을 유발

대한 자신감과 성취감을 유발

프로젝트 진행 팀장 프로젝트 개발 팀

김상진 (20001121)

(3)

개발 환경 개발 환경

 Windows XP Windows XP

 Microsoft Visual C++ Microsoft Visual C++

 OpenGL OpenGL

 Photoshop CS Photoshop CS

(4)

프로젝트 목적 프로젝트 목적

그래픽 프로그래밍에 대한 이해그래픽 프로그래밍에 대한 이해

OpenGLOpenGL 에 관한 이해에 관한 이해

OpenGLOpenGL 의 사용 범위 확대의 사용 범위 확대

Affine TransformationsAffine Transformations 의 이해의 이해

유저인터페이스의 구현유저인터페이스의 구현

3D Object Select3D Object Select

팀 프로젝트에 대한 자신감 고추팀 프로젝트에 대한 자신감 고추

(5)

프로젝트 내용 프로젝트 내용

프로젝트 프로젝트 : : 자전거 타는 로보트자전거 타는 로보트

로보트가 자전거 타는 모습 로보트가 자전거 타는 모습 3D3D 구현구현

마우스 이벤트마우스 이벤트 - - 메뉴 선택메뉴 선택

- - 로봇의 팔로봇의 팔 (( 어깨어깨 ,, 손목손목 ),), 다리 회전다리 회전

메뉴구성메뉴구성

- - 로봇 어깨 회전 로봇 어깨 회전 - - 로봇 손목 회전로봇 손목 회전 - - 로봇 다리 회전 로봇 다리 회전 - - 로봇 무릎 회전 로봇 무릎 회전

(6)

프로젝트 구성 프로젝트 구성

포인터로 몸포인터로 몸 , , 자전거의 각 부분을 지정하고자전거의 각 부분을 지정하고 , , 전역전역 변수로 다리움직임과 바퀴회전과 자전거 이동을 구 변수로 다리움직임과 바퀴회전과 자전거 이동을 구 현현

라이트닝효과를 사용 주변광라이트닝효과를 사용 주변광 , , 산란광산란광 , , 반사광의 반사광의 성분을 결정

성분을 결정

좌표축의 좌표축의 positionposition 값을 계속해서 값을 계속해서 0.10.1 씩 감씩 감 소 시켜 자전거 이동 구현소 시켜 자전거 이동 구현

glRotatef,glTranslatef glRotatef,glTranslatef 사용사용

스택을 이용한 스택을 이용한 glPopMatrix() glPushMatrix() glPopMatrix() glPushMatrix() 사사 용용

(7)

화면구성 화면구성

 로보트가 자전거를 로보트가 자전거를 타고 도로를 내려 타고 도로를 내려 감 감

 메뉴를 선택하고 메뉴를 선택하고 마우스 오른쪽버튼 마우스 오른쪽버튼

으로 사람과 자전 으로 사람과 자전

거의 회전

거의 회전 , , 팔 팔 , , 다 다

리 회전을 할 수 있

리 회전을 할 수 있

음 음

(8)

로봇 구현 로봇 구현

void torso() //

void torso() // 몸통 생성 몸통 생성 { {

glPushMatrix(); glPushMatrix();

//x //x 축 방향으로 축 방향으로 -90 -90 도 회전 도 회전

glRotatef(-90.0, 1.0, 0.0, 0.0); glRotatef(-90.0, 1.0, 0.0, 0.0);

// // 실린더로 위쪽이 약간 더 넓은 몸통을 만듧 실린더로 위쪽이 약간 더 넓은 몸통을 만듧

gluCylinder(t, TORSO_RADIUS, (TORSO_RADIUS+ 0.2), TORSO_HEIGHT, 10, 10); gluCylinder(t, TORSO_RADIUS, (TORSO_RADIUS+ 0.2), TORSO_HEIGHT, 10, 10);

glPopMatrix(); glPopMatrix();

} }

void head() //

void head() // 머리 생성 머리 생성 { {

glPushMatrix(); glPushMatrix();

glTranslatef(0.0, 0.5*HEAD_HEIGHT, 0.0); glTranslatef(0.0, 0.5*HEAD_HEIGHT, 0.0);

glScalef(HEAD_RADIUS, HEAD_HEIGHT, HEAD_RADIUS); glScalef(HEAD_RADIUS, HEAD_HEIGHT, HEAD_RADIUS);

gluSphere(h, 1.0, 10, 10); gluSphere(h, 1.0, 10, 10);

glPopMatrix(); glPopMatrix();

} }

(9)

로봇팔구현 로봇팔구현

void left_upper_arm() //

void left_upper_arm() // 왼쪽 윗팔 생성 왼쪽 윗팔 생성 {

{

glPushMatrix(); glPushMatrix();

glRotatef(20.0, 1.0, 0.0, 0.0); glRotatef(20.0, 1.0, 0.0, 0.0);

gluCylinder(lua, UPPER_ARM_RADIUS, UgluCylinder(lua, UPPER_ARM_RADIUS, U PPER_ARM_RADIUS,

PPER_ARM_RADIUS,

UPPER_ARM_HEIGHT, 10, 10); UPPER_ARM_HEIGHT, 10, 10);

glPopMatrix();glPopMatrix();

} }

void left_lower_arm() //

void left_lower_arm() //왼쪽 아래팔 생성 왼쪽 아래팔 생성 { {

glPushMatrix(); glPushMatrix();

glRotatef(20.0, 1.0, 0.0, 0.0); glRotatef(20.0, 1.0, 0.0, 0.0);

gluCylinder(lla, LOWER_ARM_RADIUS, LgluCylinder(lla, LOWER_ARM_RADIUS, L OWER_ARM_RADIUS,

OWER_ARM_RADIUS,

LOWER_ARM_HEIGHT, 10, 10); LOWER_ARM_HEIGHT, 10, 10);

glPopMatrix(); glPopMatrix();

} }

void right_upper_arm() //

void right_upper_arm() // 오른쪽 윗팔 생성 오른쪽 윗팔 생성 {

{

glPushMatrix(); glPushMatrix();

glRotatef(20.0, 1.0, 0.0, 0.0); glRotatef(20.0, 1.0, 0.0, 0.0);

gluCylinder(rua, UPPER_ARM_RADIUS, UgluCylinder(rua, UPPER_ARM_RADIUS, U PPER_ARM_RADIUS,

PPER_ARM_RADIUS,

UPPER_ARM_HEIGHT, 10, 10); UPPER_ARM_HEIGHT, 10, 10);

glPopMatrix(); glPopMatrix();

} }

void right_lower_arm() //

void right_lower_arm() //오른쪽 아래팔 생성 오른쪽 아래팔 생성 { {

glPushMatrix(); glPushMatrix();

glRotatef(20.0, 1.0, 0.0, 0.0); glRotatef(20.0, 1.0, 0.0, 0.0);

gluCylinder(rla, LOWER_ARM_RADIUS, LgluCylinder(rla, LOWER_ARM_RADIUS, L OWER_ARM_RADIUS,

OWER_ARM_RADIUS,

LOWER_ARM_HEIGHT, 10, 10); LOWER_ARM_HEIGHT, 10, 10);

glPopMatrix(); glPopMatrix();

} }

(10)

로봇다리구현 로봇다리구현

void left_upper_leg() //

void left_upper_leg() //왼쪽 윗다리 생성 왼쪽 윗다리 생성 {

{

glPushMatrix(); glPushMatrix();

glRotatef(-90.0, 1.0, 0.0, 0.0); glRotatef(-90.0, 1.0, 0.0, 0.0);

gluCylinder(lul, UPPER_LEG_RADIUS, UPPgluCylinder(lul, UPPER_LEG_RADIUS, UPP ER_LEG_RADIUS,

ER_LEG_RADIUS,

UPPER_LEG_HEIGHT, 10, 10); UPPER_LEG_HEIGHT, 10, 10);

glPopMatrix(); glPopMatrix();

} }

void left_lower_leg() //

void left_lower_leg() //왼쪽 아래다리 생성 왼쪽 아래다리 생성 { {

glPushMatrix(); glPushMatrix();

glRotatef(-60.0, 1.0, 0.0, 0.0); glRotatef(-60.0, 1.0, 0.0, 0.0);

gluCylinder(lll, LOWER_LEG_RADIUS, LOgluCylinder(lll, LOWER_LEG_RADIUS, LO WER_LEG_RADIUS,

WER_LEG_RADIUS,

LOWER_LEG_HEIGHT, 10, 10); LOWER_LEG_HEIGHT, 10, 10);

glPopMatrix(); glPopMatrix();

} }

void right_upper_leg() //

void right_upper_leg() //오른쪽 윗다리 생성 오른쪽 윗다리 생성 {

{

glPushMatrix(); glPushMatrix();

glRotatef(-90.0, 1.0, 0.0, 0.0); glRotatef(-90.0, 1.0, 0.0, 0.0);

gluCylinder(rul, UPPER_LEG_RADIUS, UPgluCylinder(rul, UPPER_LEG_RADIUS, UP PER_LEG_RADIUS,

PER_LEG_RADIUS,

UPPER_LEG_HEIGHT, 10, 10); UPPER_LEG_HEIGHT, 10, 10);

glPopMatrix();glPopMatrix();

} }

void right_lower_leg() //

void right_lower_leg() //오른쪽 아래다리 생성 오른쪽 아래다리 생성 { {

glPushMatrix(); glPushMatrix();

glRotatef(-60.0, 1.0, 0.0, 0.0); glRotatef(-60.0, 1.0, 0.0, 0.0);

gluCylinder(rll ,LOWER_LEG_RADIUS, LOgluCylinder(rll ,LOWER_LEG_RADIUS, LO WER_LEG_RADIUS,

WER_LEG_RADIUS,

LOWER_LEG_HEIGHT, 10, 10); LOWER_LEG_HEIGHT, 10, 10);

glPopMatrix(); glPopMatrix();

} }

(11)

자전거 구현 자전거 구현

void bicycle_upper() //

void bicycle_upper() //자전거 윗쪽 차체 생성 자전거 윗쪽 차체 생성 {

{

glPushMatrix(); glPushMatrix();

glRotatef(0.0, 0.0, 0.0, 0.0); glRotatef(0.0, 0.0, 0.0, 0.0);

gluCylinder(bu, BICYCLE_RADIUS, BICYCLgluCylinder(bu, BICYCLE_RADIUS, BICYCL E_RADIUS,

E_RADIUS,

BICYCLE_UPPER_HEIGHT, 10, 10); BICYCLE_UPPER_HEIGHT, 10, 10);

glPopMatrix(); glPopMatrix();

} }

void bicycle_front() //

void bicycle_front() //자전거 앞쪽 차체 생성 자전거 앞쪽 차체 생성 { {

glPushMatrix(); glPushMatrix();

////핸들과 앞바퀴를 연결해 주는 차체를 핸들과 앞바퀴를 연결해 주는 차체를 xx축 축 방향으로

방향으로 6565도 기울여서 생성 도 기울여서 생성

glRotatef(65.0, 1.0, 0.0, 0.0); glRotatef(65.0, 1.0, 0.0, 0.0);

gluCylinder(bf, BICYCLE_RADIUS, BICYCLgluCylinder(bf, BICYCLE_RADIUS, BICYCL E_RADIUS,

E_RADIUS,

BICYCLE_FRONT_HEIGHT, 10, 10); BICYCLE_FRONT_HEIGHT, 10, 10);

glPopMatrix(); glPopMatrix();

void bicycle_handle() //

void bicycle_handle() //자전거 핸들 생성 자전거 핸들 생성 {

{

glPushMatrix(); glPushMatrix();

glRotatef(90.0, 0.0, 1.0, 0.0); glRotatef(90.0, 0.0, 1.0, 0.0);

gluCylinder(bf, BICYCLE_RADIUS, BICYCLgluCylinder(bf, BICYCLE_RADIUS, BICYCL E_RADIUS,

E_RADIUS,

BICYCLE_HANDLE_HEIGHT,10, 1BICYCLE_HANDLE_HEIGHT,10, 1 0); 0);

glPopMatrix(); glPopMatrix();

} }

void bicycle_lower1() //

void bicycle_lower1() //자전거 아래쪽 앞부분 자전거 아래쪽 앞부분 차체 생성

차체 생성 {

{

glPushMatrix(); glPushMatrix();

glRotatef(-30.0, 1.0, 0.0, 0.0); glRotatef(-30.0, 1.0, 0.0, 0.0);

gluCylinder(bl1, BICYCLE_RADIUS, BICYCgluCylinder(bl1, BICYCLE_RADIUS, BICYC LE_RADIUS,

LE_RADIUS,

BICYCLE_UPPER_HEIGHT, 10, 10); BICYCLE_UPPER_HEIGHT, 10, 10);

glPopMatrix(); glPopMatrix();

} }

(12)

자전거 구현 자전거 구현

void bicycle_lower2() //

void bicycle_lower2() //자전거 아래쪽 뒷부분 자전거 아래쪽 뒷부분 차체 생성

차체 생성 { {

glPushMatrix(); glPushMatrix();

glRotatef(0.0, 0.0, 0.0, 0.0); glRotatef(0.0, 0.0, 0.0, 0.0);

gluCylinder(bl2, BICYCLE_RADIUS, BICYCLgluCylinder(bl2, BICYCLE_RADIUS, BICYCL E_RADIUS,

E_RADIUS,

BICYCLE_UPPER_HEIGHT, 10, 10); BICYCLE_UPPER_HEIGHT, 10, 10);

glPopMatrix(); glPopMatrix();

} }

void bicycle_back() //

void bicycle_back() //자전거 뒷쪽 차체 생성 자전거 뒷쪽 차체 생성 { {

glPushMatrix(); glPushMatrix();

glRotatef(-30.0, 1.0, 0.0, 0.0); glRotatef(-30.0, 1.0, 0.0, 0.0);

gluCylinder(bb, BICYCLE_RADIUS, BICYCLgluCylinder(bb, BICYCLE_RADIUS, BICYCL E_RADIUS,

E_RADIUS,

BICYCLE_UPPER_HEIGHT, 10, 10); BICYCLE_UPPER_HEIGHT, 10, 10);

glPopMatrix(); glPopMatrix();

}}

void bicycle_seat() //

void bicycle_seat() //자전거 안장 생성 자전거 안장 생성 {

{

glPushMatrix(); glPushMatrix();

glRotatef(-90.0, 1.0, 0.0, 0.0); glRotatef(-90.0, 1.0, 0.0, 0.0);

gluCylinder(bs, BICYCLE_SEAT_RADIUS, BgluCylinder(bs, BICYCLE_SEAT_RADIUS, B ICYCLE_SEAT_RADIUS,

ICYCLE_SEAT_RADIUS,

BICYCLE_SEAT_HEIGHT, 10, 10); BICYCLE_SEAT_HEIGHT, 10, 10);

glPopMatrix(); glPopMatrix();

} }

void right_pedal_bar() //

void right_pedal_bar() // 자전거 오른쪽 페달 기자전거 오른쪽 페달 기 둥 생성

둥 생성 { {

glPushMatrix(); glPushMatrix();

glRotatef(-75.0, 1.0, 0.0, 0.0); glRotatef(-75.0, 1.0, 0.0, 0.0);

gluCylinder(rpb,PEDAL_BAR_RADIUS, PEgluCylinder(rpb,PEDAL_BAR_RADIUS, PE DAL_BAR_RADIUS,

DAL_BAR_RADIUS,

PEDAL_BAR_HEIGHT, 10, 10); PEDAL_BAR_HEIGHT, 10, 10);

glPopMatrix(); glPopMatrix();

} }

(13)

자전거 구현 자전거 구현

void right_pedal() //

void right_pedal() //자전거 오른쪽 페달 생성 자전거 오른쪽 페달 생성 {

{

glPushMatrix(); glPushMatrix();

glRotatef(90.0, 0.0, 1.0, 0.0); glRotatef(90.0, 0.0, 1.0, 0.0);

gluCylinder(rp, PEDAL_RADIUS, PEDAL_RADIUS, PEDAL_HEIGHT, 10, 10); gluCylinder(rp, PEDAL_RADIUS, PEDAL_RADIUS, PEDAL_HEIGHT, 10, 10);

glPopMatrix(); glPopMatrix();

} }

void left_pedal_bar() //

void left_pedal_bar() //자전거 왼쪽 페달 기둥 생성 자전거 왼쪽 페달 기둥 생성 { {

glPushMatrix(); glPushMatrix();

glRotatef(-75.0, 1.0, 0.0, 0.0); glRotatef(-75.0, 1.0, 0.0, 0.0);

gluCylinder(lpb, PEDAL_BAR_RADIUS, PEDAL_BAR_RADIUS, gluCylinder(lpb, PEDAL_BAR_RADIUS, PEDAL_BAR_RADIUS,

PEDAL_BAR_HEIGHT, 10, 10); PEDAL_BAR_HEIGHT, 10, 10);

glPopMatrix(); glPopMatrix();

} }

void left_pedal() //

void left_pedal() //자전거 왼쪽 페달 생성 자전거 왼쪽 페달 생성 { {

glPushMatrix(); glPushMatrix();

glRotatef(90.0, 0.0, 1.0, 0.0); glRotatef(90.0, 0.0, 1.0, 0.0);

gluCylinder(lp, PEDAL_RADIUS, PEDAL_RADIUS, PEDAL_HEIGHT, 10, 10); gluCylinder(lp, PEDAL_RADIUS, PEDAL_RADIUS, PEDAL_HEIGHT, 10, 10);

glPopMatrix(); glPopMatrix();

} }

(14)

소스구현 소스구현

void mouse(int btn, int state, int x, int y) void mouse(int btn, int state, int x, int y) { {

if(btn==GLUT_LEFT_BUTTON && stat if(btn==GLUT_LEFT_BUTTON && stat e == GLUT_DOWN)

e == GLUT_DOWN) { {

theta[angle] += 5.0;

theta[angle] += 5.0;

if( theta[angle] > 360.0 ) if( theta[angle] > 360.0 ) theta[angle] -= 360.0;

theta[angle] -= 360.0;

} }

if(btn==GLUT_RIGHT_BUTTON && st if(btn==GLUT_RIGHT_BUTTON && st ate == GLUT_DOWN)

ate == GLUT_DOWN) { {

theta[angle] -= 5.0; theta[angle] -= 5.0;

if( theta[angle] < 360.0 ) if( theta[angle] < 360.0 ) theta[angle] += 360.0;

theta[angle] += 360.0;

} }

display(); display();

} }

void myReshape(int w, int h) void myReshape(int w, int h) { {

glViewport(0, 0, w, h); //

glViewport(0, 0, w, h); // 시역 조절 시역 조절 // // 절단 상자 조절 절단 상자 조절

glMatrixMode(GL_PROJECTION);

glMatrixMode(GL_PROJECTION);

glLoadIdentity(); glLoadIdentity();

if (w <= h) if (w <= h)

glOrtho(-10.0, 10.0, -10.0 * (GL glOrtho(-10.0, 10.0, -10.0 * (GL float) h / (GLfloat) w, 10.0 * (GLfloat) float) h / (GLfloat) w, 10.0 * (GLfloat) h / h /

(GLfloat) w, -10.0, 10.0); (GLfloat) w, -10.0, 10.0);

else else

glOrtho(-10.0 * (GLfloat) w / (G glOrtho(-10.0 * (GLfloat) w / (G Lfloat) h, 10.0 * (GLfloat) w /

Lfloat) h, 10.0 * (GLfloat) w /

(GLfloat) h, 0.0, 10.0, -10.0, 10.0);

(GLfloat) h, 0.0, 10.0, -10.0, 10.0);

glMatrixMode(GL_MODELVIEW);

glMatrixMode(GL_MODELVIEW);

glLoadIdentity(); glLoadIdentity();

} }

(15)

소스구현 소스구현

void main(int argc, char **argv) void main(int argc, char **argv) { {

glutInit(&argc, argv);

glutInit(&argc, argv);

glutInitDisplayMode(GLUT_DOUBLE | glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB | GLUT_DEPTH);

GLUT_RGB | GLUT_DEPTH);

glutInitWindowSize(600, 600); //60 glutInitWindowSize(600, 600); //60 0by600

0by600 크기의 윈도우 생성 크기의 윈도우 생성

glutCreateWindow("bicycles-robot"); glutCreateWindow("bicycles-robot");

// // 윈도우 상단에 윈도우 상단에 bicycle-robot bicycle-robot 이란 이 이란 이 름의 름의 title title 생성 생성

myinit();

myinit();

glutReshapeFunc(myReshape); glutReshapeFunc(myReshape);

glutIdleFunc(idle); glutIdleFunc(idle);

glutDisplayFunc(display);

glutDisplayFunc(display);

glutMouseFunc(mouse);

glutMouseFunc(mouse);

} }

////메뉴 생성메뉴 생성

glutCreateMenu(menu);

glutCreateMenu(menu);

glutAddMenuEntry("torso", 0);glutAddMenuEntry("torso", 0);

glutAddMenuEntry(“head1", 1);glutAddMenuEntry(“head1", 1);

glutAddMenuEntry(“head2", 2);glutAddMenuEntry(“head2", 2);

glutAddMenuEntry("right_upper_arm", 3);

glutAddMenuEntry("right_upper_arm", 3);

glutAddMenuEntry("right_lower_arm", 4);glutAddMenuEntry("right_lower_arm", 4);

glutAddMenuEntry("left_upper_arm", 5);glutAddMenuEntry("left_upper_arm", 5);

glutAddMenuEntry("left_lower_arm", 6);glutAddMenuEntry("left_lower_arm", 6);

glutAddMenuEntry("right_upper_leg", 7);glutAddMenuEntry("right_upper_leg", 7);

glutAddMenuEntry("right_lower_leg", 8);glutAddMenuEntry("right_lower_leg", 8);

glutAddMenuEntry("left_upper_leg", 9);glutAddMenuEntry("left_upper_leg", 9);

glutAddMenuEntry("left_lower_leg", 10);glutAddMenuEntry("left_lower_leg", 10);

glutAddMenuEntry("quit", 11);

glutAddMenuEntry("quit", 11);

glutAttachMenu(GLUT_LEFT_BUTTON);glutAttachMenu(GLUT_LEFT_BUTTON);

glutMainLoop();glutMainLoop();

} }

(16)

소스구현 소스구현

void idle() void idle() {{

if(direction==1) if(direction==1) {{

theta[7] -= 1; //

theta[7] -= 1; //오른쪽 다리의 오른쪽 다리의 thetatheta값을 값을 11씩 줄여씩 줄여 줌으로써 다리를 움직여줌

줌으로써 다리를 움직여줌 theta[9] += 1; //

theta[9] += 1; //왼쪽 다리의 왼쪽 다리의 thetatheta값을 값을 11씩 늘여줌씩 늘여줌 으로써 다리를 움직여줌

으로써 다리를 움직여줌 theta[11] += 1; //

theta[11] += 1; //자전거 바퀴의 초기자전거 바퀴의 초기thetatheta값이 값이 0.00.0 으로 설정되어 있으므로

으로 설정되어 있으므로 11씩 연속적으로 증가 시켜줌으씩 연속적으로 증가 시켜줌으 로써 회전시켜줌

로써 회전시켜줌 }}

elseelse {{

theta[7] += 1;

theta[7] += 1;

theta[9] -= 1;

theta[9] -= 1;

theta[11] += 1; //

theta[11] += 1; //자전거가 앞쪽으로 이동하기 때문에 자전거가 앞쪽으로 이동하기 때문에 바퀴는 한 방향으로만 구른다

바퀴는 한 방향으로만 구른다. . 따라서 따라서 thetatheta값을 줄여값을 줄여 줄 필요없이 계속 증가시켜줌

줄 필요없이 계속 증가시켜줌 }

}

if(theta[7] == 220.0) direction=1;

if(theta[7] == 220.0) direction=1;

if(theta[7] == 140.0) direction=0;

if(theta[7] == 140.0) direction=0;

if(direction2==1) //

if(direction2==1) //초기 초기 direction2direction200으로 설정으로 설정 되어 있음

되어 있음 {{

theta[12] += 1; //theta[12]

theta[12] += 1; //theta[12] 값을 계속해서 값을 계속해서 11씩 증씩 증 , 초기 theta[12]값은 1200으로 설정되어 있음

position -= 0.02; //position

position -= 0.02; //position값을 값을 0.0.씩 감소씩 감소 }}

else //direction2=0 else //direction2=0 {{

theta[12] -= 1;

theta[12] -= 1;

position -= 0.02; //

position -= 0.02; //자전거의 이동은 한 방자전거의 이동은 한 방 향이므로 좌표축의

향이므로 좌표축의 positionposition값을 계속해서 값을 계속해서 0.10.1씩 감씩 감

} }

if(theta[12] == 0.0) //theta[12]

if(theta[12] == 0.0) //theta[12]의 값이 의 값이 00이 되었이 되었 을 경우엔 자전거의 이동이 끝나고 이미 화면상에서 사 을 경우엔 자전거의 이동이 끝나고 이미 화면상에서 사 라졌을 때이므로

라졌을 때이므로 positionposition값을 값을 1212로 바꿔로 바꿔

주어서 자전거를 다시 화면 우상단에 위치시켜줌주어서 자전거를 다시 화면 우상단에 위치시켜줌 {{

position = 12.0;

position = 12.0;

direction2 = 1;

direction2 = 1;

}}

if(theta[12] == 1200.0) //theta[12]

if(theta[12] == 1200.0) //theta[12]의 값이 의 값이 120120 00이 되었을 경우는 자전거를 다시 우상단에이 되었을 경우는 자전거를 다시 우상단에

위치시켜

위치시켜 direction2=0direction2=0인 경우로 보내 인 경우로 보내 positionposition값과 값과 theta

theta값을 다시 감소시켜 준다값을 다시 감소시켜 준다 {

{

position = 12.0;

position = 12.0;

direction2 = 0;

direction2 = 0;

} }

(17)

프로젝트 결과물 프로젝트 결과물

 첨부파일 첨부파일

 실행파일 실행파일

참조

관련 문서

 OpenGL is an acronym for Open Graphics Library5.  OpenGL Architecture

 The Digital Textbook will use Windows XP and Linux Tablet PC Edition as its operating system... 학습자료를 국가차원에서 DB 화하는 등의 사업도

○ 기후・환경 변화에 따른 제주연안 해조류 기반 생태계에서 산호류 기반 생태계로의 대변화 현상 감시를 위한 모니터링

• 태양계의 전반적인 위치와 공전 및 자전을 구현하고 텍스쳐 맵핑을 태양계의 전반적인 위치와 공전 및 자전을 구현하고 텍스쳐 맵핑을 이용하여 실제

본 프로그램은 학생들이 삶과 밀접한 에너지 및 환경 문제에 관심을 갖게 하 여, 사회 문제에서 과학의 중요성 인식하게 하고, 환경 문제를 주제로 한 프로 그램의

본 프로그램은 학생들이 삶과 밀접한 에너지 및 환경 문제에 관심을 갖게 하 여, 사회 문제에서 과학의 중요성 인식하게 하고, 환경 문제를 주제로 한 프로 그램의

환경・ 에너지관리 환경・ 에너지 법규 환경・ 에너지관리 일반.

게임 개발 환경 게임 실행 환경 워드프로세서 분석 설계 도구 인터넷 검색 프로그램 프리젠테이션 프로그램 기획 관련 문서 요구 사항 관련 문서 프로그램 구조 관련 문서