728x90
반응형

Game Development, 게임개발/게임 수학,물리 31

게임 물리 - 랜덤하게 힘을 적용하기

사실 힘을 직접 적용한다기 보다는... position을 직접 식에 따라 주는 형식이라 조금 다르다고 볼 수 있긴 하다. 랜덤이란 무작위라는 뜻이지만 실제로 컴퓨터에서는 정확한 난수라는 것은 만들지 못하는 것으로 알려져있다. 양자컴퓨터에 한해서 난수를 만드는 데에 성공한 사례가 있지만 현재 상용화되어 있지 않기에 우리는 정확한 난수를 만들지 못한다. 그래서 우리는 유사 난수를 생성한다. 시드 값을 바탕으로 유사난수를 생성하는 것이다. 우리는 무작위하면 생각나는 것이 로또 번호다. 하지만 게임에서는 랜덤한 힘의 적용이다. 예를 들어 화산 폭발과 같은 경우 뭐가 어디에 떨어질까? 피하는 게임이라고 한다면 규칙을 간파했을 때 그 게임의 재미가 떨어진다. 그래서 우리는 게임에서의 랜덤을 집어넣어 사용자에게 몰입..

게임 물리 - 2가지 이상의 힘이 작용할 때

우리가 등속 직선운동을 배우고 나서 배우는 것이 있는데 바로 포물선 운동이다. 각 축 간의 운동이 다를 때이다. 수평으로는 등속직선운동이 수직으로는 등가속도운동이 2가지가 합쳐져 포물선 운동이 만들어진다. 실제로 x축 따로 y축 따로 움직이는 것은 아니지만 2가지로 나누어 볼 수 있다는 말이다. 사실 중력가속도를 직접 유도가능한데... 그것은 공학자에게는 사치이기에 유명한 중력가속도 상수인 9.8m/s2 이나 또는 그냥 g로 바꾸어서 쓰도록 하자. 사실 앞서 배운 등속운동에 대해서는 거리 = 시간 * 속력이 된다. 하지만 속도가 변하는 운동에서는 위의 공식이 통하지 않는다. 이를 우리는 적분을 이용하여 순간 속력 * 순간 시간을 더해서 이동 거리를 구한다. 중력과 같이 가속도가 정해져있는 등가속도에서는 ..

게임 물리 - 라디안의 이용

이전의 글에서는 각 축 이동만 배웠다. 미적분학에서 직교좌표계를 배운 다음 바로 배우는 것 극좌표계 우리는 직교좌표계보다 극좌표계를 많이 쓸 수 도 있다. 고등학교에서 한정되어 있던 생각이 대학생이 되어 넓혀지는 느낌이다. 아무튼 우리는 이전 글에서 축으로의 이동만 배웠다. 하지만 30도, 60도 이동을 하고 싶다면 어떻게 해야할까??? 키보드가 아니라 조이스틱의 입력을 받는 것은 어떨까? **사실 직교좌표계도 언제든지 극좌표계로 변환이 가능하기 때문에 둘이 같다고 봐도 무방하다. 그냥 표현의 차이다. 원하는 방향이 축으로 설명하기 힘들다면..? 각으로 표현한다. 이게 수학이다. 수학은 표현을 다르게 해서 더 쉽게 만든다. 수학이란 자신의 아는 것을 전달하기 위한 수단이며 수학을 잘한다는 것은 남을 잘 ..

게임 물리 - 등속 직선 운동

물리를 고등학교에서 처음 접했다면 솔직히 생각은 안나지만 가장 처음 접한 운동이 등속 직선이 아닌가 싶다. 등속 직선 운동이란 일정한 속도로 직선으로 이동을 한다고 생각하면 된다. 여기서 핵심은 속도가 변하지 않는다는 것이다. 운동 중에 운동 방향 속력이 바뀌지 않는 다는 것이다. ** 등속도 운동과 같다. (속도는 속력+ 방향이라 배웠다면) 우리는 일반적으로 속력, 거리, 시간으로 나누어서 관찰한다. 위의 그래프를 보면서 시간을 기준으로 나머지 것들을 한 번 살펴보자. 게임에서의 모든 이동은 아니지만 일반적으로 FPS를 보았을 때 내가 가장 먼저 접한 FPS가 서든 어택이다. W를 누르면 앞으로 이동 S를 누르면 뒤로 이동 A,S를 누르면 좌우 이동이 되었다. 또한 좌우로 눌렀을 때는 제자리 이동이 되..

아핀 변환, Affine Transformation [게임수학]

벡터 공간 -> 변환을 배운 것처럼 아핀 공간 -> 변환을 배워보자. 우리가 실제로 게임에서 다룰 모델들은 아핀 공간에 존재한다. 왜 벡터가 아니라 아핀 공간에서 다루느냐? 아핀 공간에는 방향과 크기만 존재하는 것이 아니라 "위치"라는 것이 존재한다. 게임에서 역시 "위치"란 것에 벗어날 수 없기에 실제로 사용을 하려면 아핀 변환이 필요하다. 알아보자 우리는 선형변환 - 크기 변환, 방향 변환을 배웠다. 아핀 공간에서는 어떻게 적용된다는 말일까? 어떤 모델이든 아핀 공간에 있는 모델들은 점들의 집합이라고 했다. 그 점들이 어떤 식으로 있느냐가 모델을 만든다고 했다. ++Vertex가 모여 모델을 이룬다. ** 점들의 개수에 따라 모델의 질이 달라진다. 그 점 중에서도 모델을 위치시키기 위해서 다른 점이 ..

아핀 공간, Affine Space - 3 [게임수학]

이제 마지막이다. 3D 게임에 가장 많이 쓰이는 삼각형에 대해 공부해보자 왜 삼각형이냐..? 사각형이 아니라? 사실 사각형이 삼각형 2개다. 가장 작은 도형이 삼각형이란 얘기다. 삼각형보다 큰 도형들은 다 쪼개버릴 수 있다. 또한 삼각형은 세 점이 항상 동일 평면 위에 존재할 수 있는 유일한 도형이다. ** 삼각대가 왜 다리가 3개?? -> 평면을 만들 수 있어서 중심을 잡는 것 삼각형에 색을 칠하면 그제서야 우리는 볼 수 있다. 삼각형이 이루는 3차원 모델 함 배워보자 선들로 닫혀진 공간이 바로 삼각형이 된다. ++ 사실 다각형이라고 하는 경우가 더 많다. (Polygon) 이 폴리곤을 이루는 점을 Vertex 라고 부르고 삼각형은 볼록다각형, convex polygon 이라고 한다. 왜 볼록이라고 하..

아핀 공간, Affine Space - 2 [게임수학]

저번 시간에는 선을 배웠으니 이제 면을 배워볼 시간이다. 선을 만들 때 두 점의 아핀 조합을 통해 만들었다. 면을 만들 때는 세 점의 아핀 조합을 통해서 만든다. 알아보자 면도 매개변수 방정식으로 표현될 것 같다는 느낌이 든다. 맞다. 한 평면에 점 3개 A, B, C가 있다면 저렇게 표현할 수 있다. 어디서 많이 봤다. 평면의 방정식에서 본거 같은데? 점과 점의 뺄셈 계산으로 벡터를 만들어서 점 하나와 2개의 벡터 계산으로 바꿀 수 있다. ++3차원 공간에서 선을 표현할 때는 매개변수 방정식으로 많이 표현하지만 ++3차원 공간에서 면을 표현할 때는 매개변수 방정식도 괜찮지만 일반화해서 나타낼 수 있다. -> 3D 게임에서 평면을 다룰 땐 매개변수보다 일반화 방정식이 더 이해하기 편함. 뒤에 이유 나옴 ..

아핀 공간, Affine Space [게임수학]

행렬, 벡터, 선형변환에 대해 공부해봤다. 행렬과 벡터는 바꿔서 표현이 가능하고 선형변환해도 성질은 유지된다. 그렇다면 위치는 어떻게 표현해야할까? 벡터는 크기와 방향만 가지므로 정적인 위치를 표현하기에는 무리가 있다. 그래서 우리는 점,Point 을 쓴다. 어떠한 위치를 표현할 때 좌표로 그 해당 지점을 말한다. 우리가 점을 찍는다고 말할 수 있는 공간을 아핀 공간이라고 한다. 알아보자 아핀 공간이라는 말이 익숙치가 않다. 일반적으로 유클리드 공간은 아핀 공간이지만 벡터 공간이라고도 한다. 아핀 공간의 정의 자체가 벡터공간을 필요로하기 때문이다. 아핀 공간으로 벡터 공간을 형성할 수 있다고 알고 이해해보면 되겠다. 일반적으로 직교좌표계에서 점은 원점으로부터 각 축에 대해서 얼만큼 떨어져 있는가로 표현된..

쿼터니언(사원수), Quaternions

//21.12.17 업데이트 회전에 관해서 오일러와 쿼터니언이 있다. 우리가 상식으로 알고 있는 것은 오일러이고 오일러를 보완하기 나온 것이 쿼터니언이다. 알아보자 이해하기 위해선 복소수를 알고 가야 한다. 정의부터 해보자 오일러는 무엇이고 쿼터니언은 무엇인가 오일러는 우리가 알고 있는 상식대로의 rotation이다. X,Y,Z 축이 있고 이 3축에 대해 회전을 표현하는 것이다. 하지만 이렇게 X,Y,Z로 회전을 표현할 수 있다면 쿼터니언의 필요성을 못느꼈을 것이다. 단순히 각 축에 대해서 세 개의 각도를 지정하는 것만으로는 회전이 고유하게 정해지지 않는다. 더군다나 회전행렬에 대해 교환법칙이 성립하지 않는 경우를 봤기때문에 더 그렇다. -> 즉, 회전시키는 순서가 다르면 해당 각을 똑같이 돌리더라도 결..

Linear Transformation, 선형변환들의 조합, 행렬곱 [게임수학]

지난 시간에 회전, 크기를 배워봤으니 섞여 있으면 어떻게 되는지 살짝 보고 행렬의 곱 또한 알아보자 선형 변환이 섞일 수 있는 이유는 선형 변환 후에도 선형성을 유지하기 때문이다. S를 적용해도, T를 적용해도 같다. 와 신기하다. 그렇다. 그렇다면 S는 m차원에서 n차원으로 T는 n차원에서 p차원으로 변환한다고 치자. 즉, 각 공간들이 가지는 기저벡터들을 표현해보면 이렇게 나타낼 수 있다. 그렇다면 T를 한번 생각해보자 n->p로?? 뭐 이런 식으로 나올 것이다. T자체가 n차원을 p차원으로 옮기는 것이니까 당연히 결과로 나온 벡터는 p개일 것임은 당연하다. S 또한 그렇겠지? n개를 가진다. 하지만 우리가 배우는 것은 S 따로, T 따로가 아닌 합쳐졌을 때가 궁금하다. 합쳐진다면 어떻게 표현해야할까?..

728x90
반응형