태양계 시뮬레이션 팀 명: 복학생 20031385 강유진 20031668 박지혜.

Slides:



Advertisements
Similar presentations
전산시스템 시스템 이용안내 메인 페이지 회원가입 원격시스템. 전산시스템 시스템 이용안내 회원가입 ※ 중요한 정보 : 검사진행문자, 인증키 발송 등.
Advertisements

메시지 처리의 기본 개념 메시지 발생된 이벤트의 종류와 정보를 전달하는 일종의 상수 값 윈도우 프로그래밍 가장 중요한 것은 메시지를 처리하는 것 윈도우 시스템 Application 이벤트 발생 메시지 전송 메시지 처리 화면에 출력.
Message Process for SDI Chung-Buk HRD Institute of KCCI Dept. of Information & Communication PhD. Kang, Won-Chan.
미디어 프로그래밍 II 소개.
재택창업시스템 소개 상담콜센터 쉽고 빠른 법인 설립! ! 온라인 재택창업시스템.
컴퓨터 공학 설계 및 실험 I MFC programming
Department of Digital Contents Sang Il Park
IT 패러다임을 바꾼 디지털 리더 한국대학생IT경영학회 교육팀 차헌영 가장 성공한 IT기업은?
1. 던전 디자인 개요_1 1. ‘던전’ 룬스톤은 던전 한 층에도 여러 개가 존재하며, 각 룬스톤 마다 영향을 미치는 범위가 설정되어 있다. 룬스톤이 영향을 주는 범위에 일정시간 사용자가 위치해 있게 되면 사용자 캐릭터는 ‘유령화’ 되어 버리기 때문에, 사용자는.
03장 영상처리를 위한 Visual C++ 디지털 영상 파일 포맷 MFC 응용 프로그램 마법사를 이용한 MFC 프로젝트 작성
윈도우 운영체제와 윈도우 응용 프로그램의 특징을 이해한다.
Lecture 2 MFC and Application Frameworks
Lab 10 Guide: 프린터 출력 예제. 한 페이지의 그림 인쇄 (교재 24장, 쪽)
Visual C++ Programming Document/View Architecture 3
MFC를 이용한 네트워크게임 졸업 프로젝트 담당 교수 : 김재형 교수님 김 성준 김 민기.
MFC 발전 과정과 주요 특징을 개괄적으로 이해한다.
윤 홍 란 MFC 기초 윤 홍 란
공통 컨트롤의 종류와 특징을 개관한다. 각종 공통 컨트롤의 사용 방법을 익힌다..
스레드의 개념과 동작 원리를 이해한다. MFC 스레드의 두 종류인 작업자 스레드와 UI 스레드 사용법을 익힌다.
OpenGL Project (3D 움직이는 자동차)
Program Memorandum - MODEL HOUSE
컴퓨터 계측 및 실습 스테핑 모터 영남대학교 기계공학부.
SMALL TOWN 조이름 : ~ING < 최종 결과 보고서 >
문 성 원 3D Game Programming QuadTree Culling 문 성 원 KoreaIT 전문학교 게임학과.
MFC 프로그래밍에 관한 팁 / Keyboard / Timer
MFC 프로그래밍에 관한 팁 / Keyboard
Lecture #9 제 6장. 음영법(Shading).
Visual C++ Programming Output and File
Visual C++ Programming Common Controls
5장. 마우스와 키보드.
openGL Project 결과보고서 야구 시구 시뮬레이션
Homework Hierarchical bounding volume
7. 자극과 반응 7-2. 신경계 3. 여러 가지 반응.
프로그래밍2 및 실습 C언어 기반의 C++ 2.
Hanyang University Jungsik Park
날짜: 팀명: TEAM-SIX 발표자: 이기영
OpenGL PROJECT 우광식 성기영 서창수 이인주.
openGL Project 제안서 비 오는 정류장에서
컴퓨터 계측 및 실습 A/D-converter 하중센서
OpenGL Project 조민정 장선례.
Real-time Tactics Game
Computer Graphics OpenGL 설치 및 설정
OpenGL 프로젝트 김병욱 김상진 김성환.
가상현실연구실 박정식 증강현실 예제 가상현실연구실 박정식
컴퓨터의 기초 제 2강 - 변수와 자료형 , 연산자 2006년 3월 27일.
Draw the basic Geometry Objects
OpenGL Project Dong-seo Univ Multimedia Engineering.
4장 - PHP의 표현식과 흐름 제어-.
3장. 변수와 연산자. 3장. 변수와 연산자 3-1 연산자, 덧셈 연산자 연산자란 무엇인가? 연산을 요구할 때 사용되는 기호 ex : +, -, *, / 3-1 연산자, 덧셈 연산자 연산자란 무엇인가? 연산을 요구할 때 사용되는 기호 ex : +, -, *, /
Lab 9 Guide: 인터넷 프로그래밍 예제 * 일대일 채팅 프로그램 (교재 27장, 쪽)
Music Robot #Define A+(12-15조) 팀원: 05학번 양현철 , 김 청 07학번 예강훈 , 김한수
openGL Project 제안서 - 해상 전투
OpenGL Project.
OpenGL project – Easy Flight Simulator
LOGOTYPE 춤추는 풍선 팀장 : 이준호 팀원 : 장원진.
곡선 처리.
C# 10장. 참조형.
직장생활 예절 ① - 인사 1.내가 먼저 [인사의 5point] 2.상대방의 눈을 보고 미소지으며 3.상대방에 맞춰서
OPENGL project 구성원 : 김수민,남현우 OPENGL을 이용한 당구(3구) 구현하기.
인천경제자유구역 영종지구 영종하늘도시 개발사업
떠나자! 우주로 환영합니다 경상남도사천교육청영재교육원 안녕하십니까? 지금부터 대구광역시 교육과학연구원 발명교육센터 개관에 따른
01. ‘한글뷰어’ 설치 전 준비사항.
1차 발표: 내일은 홈런왕 학번: 이름: 주해성.
OpenGL Project = Solar System = 김민지 박유나.
컨트롤, 프로퍼티, 이벤트.
MFC 응용 프로그램 구조 두 개의 윈도우로 구성된 일반적인 MFC 프로그램 프레임 윈도우
OpenGL (3D Racing) PROJECT 2011 Dongseo Univ..
OpenGL Project 과 목 명 : 컴퓨터 그래픽스 E14반 담당교수님 : 이병국교수님 팀 원 : 신호환
MFC 기초 윈도우 응용프로그램 개발 간략한 역사 Microsoft Foundation Classes
OpenGL 프로젝트 복학생은 죽지않아!! ( 강유진, 박지혜)
Presentation transcript:

태양계 시뮬레이션 팀 명: 복학생 20031385 강유진 20031668 박지혜

개발환경 개발환경 Windows XP Visual C++ 6.0 (MFC) OpenGL

참고자료 "OpenGL 프로그래밍", 우상수, 사이버출판사, 1998  "컴퓨터그래픽스 배움터", 최윤철.임순범.고견 공저, 생능출판사, 2003   http://www.solarne.com/   http://www.ultimategameprogramming.com/   http://liftoff.msfc.nasa.gov/academy/space/solarsystem/solarsystemjava.html   http://www.geocities.com/eagle_speaks/SolarSim/Appframe.html   http://www.sssim.com/en/product/studio/download.html   http://grace.chonnam.ac.kr/%7Emelchi/research/opengl/glEvalCoord.html   http://profs.sci.univr.it/~colombar/html_openGL_tutorial/en/index.html

개발동기 태양계의 공전과 자전에 대한 시뮬레이션 중력개념을 넣은 태양계 시뮬레이션을 개발하기 위한 초기버전 => 기본모델을 3D환경에서 구현할 수 있음을 보인다

배경지식(1) 태양계란? 태양계는 태양을 중심으로 수성, 금성, 지구, 화성, 목성, 토성, 천왕성, 해왕성, 명왕성으로 구성되어 있으며 각 행성에는 행성 주위를 도는 위성이 있고 그밖에 소행성, 혜성이 있다

배경지식(2) 실제 태양계의 정보를 이용하여 제작 태양계 자료 태양과의 거리에 비해 행성의 크기가 공전주기 자전주기 행성반지름 태양과의 거리(타원궤도의 행성도 포함) 궤도반지름 ( 짧은거리, 긴거리 ) 태양과의 거리에 비해 행성의 크기가 상대적으로 작으므로 행성의 크기 확대

태양계 기본정보(1)

태양계 기본정보(2)

타원궤도 타원궤도에서 추가로 필요한 정보 원궤도 X축거리 Y축거리 궤도중심과 태양간거리 궤도중심과 태양간거리가 0

궤도평면의 각도 태양계 내의 행성들의 궤도는 비교적 같은 평면상에 있다. 명왕성만이 일반적인 궤도평면과 17‘기울어져 공전한다. 17` Pluto

실제구현화면

시스템 사용방법 시점 거리조절 : 마우스 오른쪽 버튼을 누른 상태로 드래그 시점 각도조절 : 마우스 왼쪽 버튼을 행성크기 확대/축소 ‘+’ : 확대 ‘-’ : 축소 진행속도 증가/감소 ‘1’ : 증가 ‘2’ : 감소

시스템 사용방법 거리조절 각도조절

시스템 사용방법 행성확대/축소

주요효과 뒷면제거 : 보이지 않는 뒷면 그리지 않음 은면제거 : 깊이 검사를 통해 은면제거 조명 : 주변광으로 지정 =>태양의 경우 스스로 빛을 내기 때문에 조명을 받지 않도록 하였다. 광원 : 태양의 위치에 광원을 설정하여 난반사광을 지정 텍스처링 : 행성에 비트맵 텍스처를 입힌다 더블버퍼링 : 깜빡거림을 없애기 위해 더블버퍼링을 수행한다

효과설명 ■ 뒷면제거 CChildView::Init() 에서 glEnable(GL_CULL_FACE); ■ 은면제거  glEnable(GL_DEPTH_TEST); ■ 조명 glEnable(GL_LIGHTING); glLightModelfv(GL_LIGHT_MODEL_AMBIENT,m_ambLight); 주변광을 설정한다. 행성자체에도 기본적으로 자체적으로 빛을 낸다.

효과설명 ■ 광원 CChildView::Init() 에서  glLightfv(GL_LIGHT0,GL_DIFFUSE,m_sourceLight); glLightfv(GL_LIGHT0,GL_POSITION,m_lightPos); glEnable(GL_LIGHT0); 광원을 태양의 위치에 두고 행성들이 마치 태양에서 빛을 받아 반사하는 듯한 효과를 주게 한다. ■ 텍스처링 CChildView::ReadTexture()  11개의 텍스처(태양, 수성...명왕성, 궤도선) 생성하고 CBmp 클래스를 통해 비트맵 이미지 읽어 텍스처를 생성한다. CChildView::Draw() 에서 glBindTexture(GL_TEXTURE_2D, textureid[ORBITLINE]); glBindTexture(GL_TEXTURE_2D, textureid[i]); 텍스처를 입힐때 그 행성에 해당하는 텍스처를 입혀야 한다.

함수설명 ■ SolarSystem 클래스 SolarSystem() : 모든 행성을 생성하고 초기화한다 virtual ~SolarSystem() : 행성을 삭제한다 void Slow() : 진행속도를 느리게 한다 void Fast() : 진행속도를 빠르게 한다 void Clock() : 1프레임에 해당하는 시간에 행성의 공전/자전을 수행한다 ■ Planet 클래스 Planet(float,float,float,float) : 원에 가까운 궤도를 가진 행성을 위한 생성자 Planet(float,float,float,float,float,float) : 타원궤도를 가진 행성을 위한 생성자 float GetRotationAngle() : 현재 자전한 각도를 반환한다 float GetAngleY(float Angle) : 궤도선을 얻기위해 특정 각도에서의 y위치를 반환한다 float GetAngleX(float Angle) : 궤도선을 얻기위해 특정 각도에서의 x위치를 반환한다 float GetY() : 현재 y 위치를 반환한다 float GetX() : 현재 x 위치를 반환한다 float GetRadius() : 행성의 반지름을 반환한다 int GetYear() : 해당 행성의 공전을 1년으로 하는 행성력 년을 반환한다 void Run(int nCount) : nCount*10분동안의 공전과 자전을 처리한다 float radian(float dAngle) : 각도를 라디안값으로 바꿔준다

함수설명 ■ CBmp 클래스 boolLoadBitmap(char*filename) :비트맵을 읽어 메모리에 할당한다 void FreeImage() : 할당된 메모리를 해제한다

함수설명 ■ CChildView 클래스 void Init() : 효과를 설정하고, 구형객체를 생성한다 void Draw() : 태양계 모델을 그린다 void ReadTexture() : 비트맵 텍스처를 읽는다 void OnPaint() : 윈도우 갱신시 Draw()를 호출하고, 더블버퍼링을 수행한다 BOOL OnEraseBkgnd(CDC* pDC) : InvalidateRect(NULL)을 설정하여도 화면이 깜빡거림을 막기위해 항상 FALSE로 설정한다 void OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags) : 키보드조작 처리 int OnCreate(LPCREATESTRUCT lpCreateStruct) : 윈도우 생성시 픽셀포맷을 얻고, DC를 오픈지엘과 연결하며, Init()를 호출, 타이머를 설정한다 void OnDestroy() : 타이머를 해제하고 RC를 삭제하고, DC의 사용을 해제한다. void OnLButtonDown(UINT nFlags, CPoint point) : 각도조절 시작점 설정 void OnLButtonUp(UINT nFlags, CPoint point) : 거리조절 시작점 설정 void OnMouseMove(UINT nFlags, CPoint point) : 각도조절, 거리조절 void OnSize(UINT nType, int cx, int cy) : 윈도우 사이즈 변경시 뷰포트를 변경한다 void OnTimer(UINT nIDEvent) : 타임 이벤트 발생시 태양계에 1프레임을 진행한다

문제점 태양을 투명으로 처리하지 못함 보는 시점의 각도 변경시 약간의 어색함이 있음 배경우주의 텍스처를 입히지 못함 보는 시점의 각도 변경시 이전의 변경된 각도를 저장하여 그 위에 또 변경하는 방식으로 해결 가능 배경우주의 텍스처를 입히지 못함 텍스처가 커졌을때 느려지는 현상을 해결 해야함

감사합니다 *^_____^*