게임프로그래밍
-
일차원 운동@ 16. 1 ~ 17. 1/기초수학과 물리 2014. 5. 27. 00:12
등속도 운동의 이동거리 속도 V가 일정할 때, 변위 = 속도*시간(D=v*t) * 프레임 사이의 변위 시간이 1프레임일때 (통상 1/30초) 새위치 = 이전위치 + 속도 * 시간(1/30) 평균속도 임의의 변위와 시간 간격 t가 주어질때 v = x2 - x1 / t (x2 : 이동후 위치, x1 : 이동전 위치) 가속도는 초기시간 t1에 순간속도 v1를 가지고 있는 상태에서 몇 초 후 t2에 순간속도 v2의 속도의 변화율로 정의된다. a(가속도) = v2 - v1 / t2 - t1 * 계산하기전 속도의 단위와 시간의 단위가 일치하는지를 확인해야한다. 예를 들어 속도의 단위가 mi/h인데 초로 나누는것은 안맞다. 초나 시간 둘중에 하나로 단위로 맞춰야함..
-
회전@ 16. 1 ~ 17. 1/기초수학과 물리 2014. 5. 13. 00:10
2차원 회전 회전각이 Θ로 주어질떄 [x'] [ cosΘ -sinΘ 0][x] [y'] = [ sinΘ cosΘ 0][y] [1] [ 0 0 1][1] 회전할 각을 알면 사인과 코사인 값을 구하여 행렬을 곱하기만 하면된다. 2차원 회전은 한개인데, 3차원은 3개이다. 그래서 3개의 회전변환 행렬을 따로따로 정의해야한다. z축 중심 3차원 회전(롤 ROLL) 회전각이 Θ로 주어질떄 [x'] [ cosΘ -sinΘ 0 0][x] [y'] = [ sinΘ cosΘ 0 0][y] [z'] [ 0 0 1 0][z] [1] [ 0 0 0 1][1] x축 중심 3차원 회전(피치 PITCH) 회전각이 Θ로 주어질떄 [x'] [ 1 0 0 0][x] [y'] = [ 0 cosΘ -sinΘ 0][y] [z'] [ 0 si..
-
삼각함수의 기초(도 vs 라디안)@ 16. 1 ~ 17. 1/기초수학과 물리 2014. 4. 5. 14:12
x축 방향으로부터 반시계 방향으로 각도를 재면 양의각 시계방향으로 각도를 재면 음의 각이 나옵니다. 이렇게 각을 결정하는 것은 끝변의 위치를 측정하는 것입니다. 각도는 라디안으로도 측정할 수 있습니다. 한바퀴 돌아 제자리로 오는 것을 360도 라고 하고 라디안으로는 2π^r 입니다. 절반은 180이고 그럼 라디안으로는 ? π^r 즉 도단위의각(00도) * (π^r / 180도) = 라디안 단위의 각 반대로 라디안 단위를 도 단위로는? 라디안 단위의각(00라디안) * (180도 / π^r) = 도 단위의 각 120도를 라디안으로 변경해보면 120 * (π^r / 180) 이므로 = 2π^r / 3 이 된다. 이 값을 10진수로 표현하려면 π에 3.1415926을 대입하면 된다. *모든 C++ 삼각함수 라이..
-
원과 구@ 16. 1 ~ 17. 1/기초수학과 물리 2014. 4. 4. 23:49
중심의 위치가 (h, k)이고, 반지름이 r인 원의 방정식은 (x-h)^2 + (y-k)2 = r^2 원의 중심이 원점이라면 피타고라스의 정리와 유사한 점을 더 쉽게 찾아낼 수 있습니다. (h, k)에 0,0을 대입하면 x^2 + y^2 = r^2 x^2 + (y+1)^2 = 9의 중심과 반지름은? 중심을 구하려면 먼저 원의 방정식의 알반형과 맞춰봐야 합니다. 중심의 좌표는 (h,k)가 되는 것이죠 결국 h=0, k=-1 이 됩니다. * 중심의 위치를 구할때는 + 와 - 기호에 주의해야합니다. 일반형에서는 괄호안에 -기호가 있다는 것을 기억해야합니다. 만약 그 자리에 + 기호가 있다면 실제로는 -기호가 붙은 것을 의미하며 따라서 h 나 k는 실제로는 음수가 됩니다. 구의 방정식 중심이 (h, k, i)이..
-
두 점사이의 거리@ 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)일 경..