728x90
반응형

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

선형변환, Linear Transformation - 회전변환, 로드리게스 회전 공식 [게임수학]

이전 글에 이어서 이번엔 임의의 축을 기준으로 회전 변환하는 것을 알아보기로 했다. 축이 x,y,z가 아니고 임의로 축을 잡을 땐 어떻게 할까...? 역시 이러한 회전변환도 벡터 공간을 벗어나지 않을 것임을 직관적으로 안다. 하지만 어떻게는 감이 잘 안온다. 그래서 그림을 봐야겠다. 임의의 벡터 a가 기준이다. 임의의 벡터 v를 a 만큼회전시키려고 한다. ++위에건 소문자 에이(벡터), 아래건 알파(각) Ra는 회전 변환이다. 그림을 감이 잘 안 온다... 하지만 여기서 벡터 v를 벡터 a에 투영시킨 벡터v(proj)와 그 v(proj)에서 v로부터v로부터 빼서 나오는 v(perp)가 있다. ??? 설명 드럽다고 생각할 수 있다. 쉽게 말하자면 아니 그림을 보면 빨간색이 v(proj) 파란색이 v(per..

선형 변환- 크기변환(Scaling), 회전변환(Rotation) [게임수학]

선형 변환을 지난 글에서 살짝 알아보았고 결국 벡터 공간의 기저벡터를 바꾸는 것이 무엇에 이용되는지 알아볼 예정이다. 그 중 크기 변환과 회전 변환을 알아보겠다. 크기 변환은 우선 쉬운 변환이다. 벡터의 2가지 성질인 방향과 크기 중에서 크기만 바꾸는 것이다. 크기를 바꾸는 변환을 T라고 한다면 이렇게 표현할 수 있을 것이다. 예를 들어서 v가 (1,2,4)라고 한다면 이렇게 된다. 간단하다. 실제로 계산을 하기 위해서는 위처럼 나타내는 것보다는 행렬로 하는 것이 좋은데 a,b,c만큼 변환한다고 하자 행렬로는 이렇게 나타낸다. M이 변환하는 행렬이다. ++ 이전 시간에 배웠다. 변환된 이후의 모습이다. 보면 행렬의 특징을 볼 수 있는데 주대각성분을 제외한 모든 성분이 0이다. a,b,c는 각 축에대한 크..

선형변환, Linear Transformation [게임수학]

앞서 선형에 대한 정의도 했고 선형 변환도 살짝은 설명했다. 선형 변환은 하나의 벡터 공간을 다른 벡터 공간으로 변환하는 함수라고 했다. ++ 기저 벡터가 변하는 그런 것들 선형 변환인 이유는 변환을 하더라도 벡터공간의 조건에서 선형성을 잃지 않기 때문이다. 이로 인해 얼마나 우리가 이용할 것이 많은지 신나지 않나?? 우선 나는 신나지는 않고 흥미롭긴 하다. 이전에 벡터를 행렬로 표현이 가능하다고 했다. 때문에 선형 변환도 행렬로 표현이 가능하다고 말했다. 어떻게 가능할까?? 예를 들어볼까? 선형 변환 T가 있다고하자 이 변환은 벡터 공간 V를 다른 벡터 공간 W로 변환해주는 변환이다. 벡터 공간 V를 다른 벡터 공간인 W로 바꾸고 싶다. (차원은 각각 n,m차원이다) 벡터 공간 V에서 임의의 벡터 v는..

행렬, Matrix - 3 행렬과 벡터 관계 [게임수학]

이전에도 말했듯이 행렬과 벡터는 뗄레야 뗄 수 없는 사이가 되었다. 그렇지만 우리는 그 사이를 모르기에 조심스럽게 행렬과 벡터에게 말을 걸어야 한다. 걸어보자 사실 이전 글에서 행렬의 종류를 배울 때 왜 열 벡터?, 행 벡터? 왜 행렬을 벡터라고 했는지 궁금했을 수도 있다. 솔직히 안 궁금했어도 알아보자 ++열 벡터, column-major vector 행 벡터, row-major vector 일반적으로 3차원 공간에서 벡터가 있다고 하면 1 by 3 matrix나 3x1 행렬로 나타낸다. **보통 수학에서는 열 벡터를 기준으로 삼는다. 우리는 수학을 거스르고 싶지 않기에 나도 열 벡터를 기준으로 삼아서 설명하려고 한다. 일단 벡터를 행렬로 표현할 수 있다면? 벡터 간의 연산도 행렬로 표현할 수 있어야 ..

행렬, Matrix - 2, 가우스 요르단 소거법, 역행렬, 행렬식, Determinant [게임수학]

지난 번에는 연립 1차 방정식을 어떻게 행렬로 푸는지를 알아봤다. 하지만.. 연립 일차 방정식을 구하는 데 그치지 않았으니 역행렬까지 건드려버린 것이었다. ** 역행렬은 왜 정방행렬(정사각행렬) 밖에 없어요?? 라고 할 수 있다. 따지고 역으로 역행렬이 있는 행렬들을 보면 교환이 가능하다. 근데 만약 정방행렬이 아니라면 교환을 해도 과연.. 연산이 가능할까? 를 생각해보자. 가우스-요르단 소거법을 역행렬을 구하는 데 사용했다는 것인데 우선 주어진 행렬과 같은 크기의 항등행렬을 붙여서 확대 행렬을 만들고 원래 주어진 행렬을 기본 행 연산을 사용해서 기약 행 사다리꼴 형,으로 만든다. 이 과정에서 원래의 항등행렬의 성분들도 똑같은 기본 행 연산들에 의해 바뀌게 되는데 그것이 바로 주어진 행렬의 역행렬이 된다..

행렬, Matrix - 1, 연립1차방정식, 가우스 소거법 [게임수학]

라떼는.. 수1이라는 고교과정에서 배웠는데.. ㅋㅋㅋㅋ 지금은 없어졌다 하대? 아무튼 어차피 그 행렬은 행렬도 아니었다. 왜 벡터 이후에 행렬을 공부하냐? 벡터가 행렬에 적용되는 것을 보면 그런 말 안나온다. 다시 백지부터 시작해보자 행렬은 row, column 으로 이루어져 있고 가로 세로로 나누어져 있다. **무엇이 가로이고 세로인지 모를 땐 (가로 횡) 한자를 기억하자. 가로가 행, column 이다. 세로가 렬, row 이고 기본적으로 행렬은 연립 1차 방정식을 풀기 위해 나타낸 개념이다. 실제로 우리가 2차 행렬을 배울 때만해도 이게 다인 줄 알았다. 그렇게 행렬은 이어져 내려오다가 어떤 수학자에 의해 선형 변환들의 조합을 연구하다 행렬 곱셈의 정의를 이끌어 냈다고 한다. 그래서 벡터와 선형 변..

벡터(Vector) - 3(외적, Cross product) [게임수학]

이번에는 외적에 대해서 조금 알아보려고 한다. 내적이랑 비슷하겠지 생각하면 정답 다를 거 없다. 알아보자 ** Outer Product라고도 부르는데 이는 벡터곱이 아닌 텐서곱을 의미한다. 결과값이 행렬로 나온다. 벡터의 외적은 두 벡터를 가지고 다른 벡터를 만드는 연산이다. 다만 그 벡터가 두 벡터에 대해 수직인 벡터일 뿐... 아래 그림이 바로 외적 그림이다. u가 v,w가 만드는 평면에 대한 법선벡터가 되는 것이다. ** 법선벡터 2개 아닌가요? 위 아래 2개? 라고 할 수 있다. 맞다!! 2개가 나온다.. 그래서 외적이 교환법칙이 성립하지 않는 이유다. 곱하는 순서에 따라 벡터의 방향이 반대로 나와서 그렇다. 왼손 좌표계를 쓸 것이냐 아니면 오른손 좌표계를 쓸 것이냐? 에 따라 달라진다. 3D 그..

벡터(Vector) - 2(내적, Dot product, Inner product) [게임수학]

벡터를 이어서 공부할 건데 내적을 공부해 볼 생각이다. 하지만 주제가 게임 수학이니만큼... 어디에다 쓰일 수 있을지 생각해보면서 배워보자 단순히 벡터 내적이 무슨 뜻인지 부터 알아보자 영어로는, Dot Product, Inner Product라고 한다. 보통 내적은 벡터의 방향이 얼마나 일치하는 지의 용도로 쓰인다. -> 벡터 간의 유사도로 쓰이는 경향이 있음 그래서 내가.. NLP할 때 유사도를 많이 사용했지 ㅎ 만약 해당되는 2개의 벡터가 크기가 1이라면 벡터 사이각에 대한 cos 값을 얻을 수도 있다. 또한 벡터의 성분으로도 내적을 구할 수 있다. **또한 자기 자신과 내적을 할 경우에는 자신의 크기 제곱을 구할 수 있다. -> 실제 프로그래밍에서는 벡터의 길이보다 길이의 제곱을 사용하는 경우가 ..

벡터(Vector) - 1 [게임수학]

이전에 선형대수에서 벡터공간을 알아보았고 선형변환에 대해 알아보았다. 우리는 이미 벡터란 개념을 배웠지만 여기서 살짝 찍먹 한 번 더... 하고 넘어간 후 다시 깊게 들어가보자 요즘 과정에서 기하와 벡터가 빠졌다고 들었지만... 어차피 배운 사람도 벡터 가물가물하다. 우리가 배운 벡터들은 유클리디안 벡터, Euclidean Vector이다. 여기에 대해 살짝 찍먹 해보자 유클리드는 정말 있어보이는 이름이고 많이 들어봤을 것이다. 솔직히 검색해서 이걸 찾을 정도의 사람이면 유클리드 기하학이라는 말을 살다가 한 번쯤은 들어봤을 것이다. 우리는 유클리드 공간이란 말을 배우게 되는데 유클리드 공간이란 말은 직접적으로 배우진 않았겠지만 유클리드 공간의 이해는 우리는 좌표계로서 이해하였다. 공간이라면 x,y,z 축..

728x90
반응형