Inventory
-
두 점사이의 거리@ 16. 1 ~ 17. 1/기초수학과 물리 2014. 4. 2. 21:55
프로그래밍을 하다 보면 화면상에서 두 점의 거리를 알고 싶을 때가 자주 있습니다. 이 두점은 충돌하려는 두 물체이거나 혹은 상호작용하는 두 캐릭터가 될 수 있습니다. 또는 일정거리 이내로 들어오기를 기다려 공격하려는 인공지능이 될 수 있습니다. 거리를 계산하는 가장 간단한 방법은 피타고라스의 정리를 이용하는 것 직각삼각형에서 빗변의 길이를 c 다른 두변의 길이를 a,b라고 하면 a^2 + b^2 = c^2 직각삼각형에만 해당된다. 즉 두점 p1(x1,y1) p2(x2,y2)사이의 거리는 p1p2= √(x2-x1)^2 + (y2-y1)^2로 표현이 된다. sqrt()함수는 제곱근을 리턴하는 함수 pow함수는 제곱하여 결과를 리턴(첫번째 인자를 두번째 인자만큼 제곱하여 결과를 리턴) 그럼 3차원으로 확장했을..
-
충돌 검출에서의 응용@ 16. 1 ~ 17. 1/기초수학과 물리 2014. 4. 1. 22:32
게임 프로그래밍을 할떄 두 직선이 만나는 점이 어디인지 알아야할 때가 있습니다. 두개의 직선의 방정식을 묶어서 일차 연립방정식을 만들 수 있습니다. 일차 연립방정식의 가능한 3가지 경우가 있다. 2x + 3y = 3 -x + 3y = -6 이 두 직선은 한점에서 만나게 된다. 다음 -3x + 6y = 6 -x + 2y = 2 두 직선은 일치한다. 똑같은 기울기와 y절편을 가진다. 다음 -x + 2y = 2 -x + 2y = -2 기울기는 같지만 y절편은 다르다 세가지 경우를 요약하면 1. 두 직선의 기울기가 서로 다르면 유일한 해 2. 두 직선의 기울기와 y절편이 모두 같으면 무한히 많은 해 3. 두 직선이 기울기는 같지만 y절편이 다르면 해는 없음 두 직선이 한점에서 교차하는지 확인한 다음에는 교차점이..
-
직선의 방정식(1)@ 16. 1 ~ 17. 1/기초수학과 물리 2014. 3. 31. 22:52
A와 B가 동시에 0이 아닐 때 Ax + By = C꼴의 갖는 방정식의 그래프는 직선입니다. 역으로 모든 직선은 A와 B가 동시에 0이 아닌 Ax + By = C꼴의 방정식으로 표현할 수 있습니다. 예) 3x - 2y = 8 y = (3/2)x - 4 그럼 y=3의 그래프는 ? 다음과 같이 생각하면 된다. 0x + 1y = 3 직선의 성질 예를들어 수평으로 100m를 이동할 때 마다 수직으로 50m 일정하게 상승하는 경사면을 보여준다면 기울기는 이동량에 대한 상승량의 비율로 계산할 수 있으며 기울기는 50/100 즉 1/2(50%)가 된다. 수학적으로는 1/2x - y = 0이라는 표현을 할 수 있다. P(x1,y1) Q(x2,y2) (y2-y1)/(x2-x1)=기울기 인데 P(0,0) Q(2,1)일 경..
-
참조형 리턴 타입 / const 키워드@ 16. 1 ~ 17. 1/C++ 2014. 3. 5. 23:23
함수나 메서드의 리턴값에도 참조령 타입을 사용할 수 있다.(포인터 역시) 당연하지만 참조형 리턴 타입은 리턴되는 객체가 함수/메서드의 종료 이후에도 계속 유효할 때만 사용할 수 있다. 로컬변수가 안되는 이유는 로컬변수는 함수가 구동되는 동안만 유요한 스택에 저장되어 있다가 함수가 리턴할때 스택과 함께 삭제된다. const 키워드 무언가 절대 변경되지 말아야 할 것을 지정한다. 데이터가 변경되는 것을 막고 싶다면 const int* p; p=new int[10]; p[4]=5; // 컴파일 에러 @ ip가 가리키는 데이터는 수정할 수 없게된다. 방식은 다르지만 int const* p로 선언해도 같은 효가가 나타난다. const 키워드를 int앞에 두든 뒤에 두든 기능적으로는 아무런 차이가 없다. 데이터가 ..
-
(챕터 06) 문자를 출력하는 방법@ 16. 1 ~ 17. 1/게임프로그래밍의 정석 2014. 3. 2. 22:25
drawString(0,0,"HAHA") 라는 함수로 문자가 출력이 된다면.. drawString(int x, int y, const char* str) { int dstX=x; int dstY=y; const int cWidth=8; const int cHeight=16; for(unsigned int i=0;str[i]!='\n';++i){ int srcX=getImagePositionX(src[i]); int srcY=getImagePositionY(src[i]); mFontImage->draw(dstX, dstY, srcX, srcY, cWidth, cHeight); dstX+=cWidth; } } 이런식의 코드가 될것이라고... 문제는 getImagePostion()함수의 내용이다.