목록C++ (208)
응애맘마조
GameObject.h의 파일이 조금 수정되었습니다. 중요한 부분은 private와 protected로 바뀌었습니다. static void CreateStaticMember과 static void DeleteStaticMember는 static 함수인데 프로그램이 실행될 때 딱 한 번 실행됩니다. 앞으로 로컬 포지션과 월드 포지션을 사용합니다. LocalPos, WorldPos 이름의 함수로 사용합니다. 이동 시킬 때는 +=을 사용합니다. 이때 포지션 이름은 MoveLocalPos, MoveWorldPos입니다. 위치를 고정 시킬 때는 =을 사용합니다. 이때 포지션 이름은 SetLocalPos, SetWorldPos입니다. 이 상황에서 만약 부모 객체가 있다면 정규화와 Invert(역행렬)을 곱해서 부모..
이번엔 SRT 부분에서 RT 부분을 주로 하였습니다. RT는 R × T로 회전과 이동을 동시에 가지는 행렬입니다. 표현하게 되면 cθ sθ 0 0 -sθ cθ 0 0 0 0 1 0 Tx Ty Tz 1 이렇게 표현할 수 있습니다. 함수 중에 asinf, acosf, atanf가 있습니다. 여기서 a는 역삼각 함수입니다. (크게 중요하지는 않습니다.) 벡터를 사용하면서 각도를 사용하여 벡터를 알 수 있었는데 그럼 반대로 벡터를 사용하여 각도를 알아낼 수 있습니다. 모든 객체의 포지션 또한 똑같지는 않습니다. 여기서 오늘 중요한 Parents를 했습니다. 사전적 의미로는 '가족'이라는 의미를 가지고 있지만 프로그래밍에서는 부모 객체가 있으면 자녀 객체를 생성하여 SRT × RT로 계산하는 식으로 되었습니다. ..
오늘은 월드 공간과 로컬 공간에 대해서 했었습니다. 월드 공간의 x축과 y축은 고정되어 있습니다. 이 좌표를 통해 SRT 하는 것을 월드 공간의 변환이라고 합니다. 이렇게 해서 자기만의 공간이 있는 것을 로컬 공간이라고 합니다. 월드 공간과 로컬 공간은 다른 공간입니다. 회전 행렬의 cθ sθ 0 0 부분은 x축이고, -sθ cθ 0 0 부분은 y축 입니다. 전방 선언은 헤더 파일 위에 미리 선언을 해서 객체 생성시 알게 해주는 정도로 이해하면 됩니다. 오늘은 간단하게 배워서 내용이 짧습니다. 읽어주셔서 감사합니다.
어제 말했던대로 오늘은 벡터를 했습니다. 벡터 또한 행렬 못지않게 중요한 부분 중 하나입니다. 벡터는 방향과 크기를 가진 물리량입니다. 좌표도 벡터로 볼 수 있고 앞으로 모든 이동은 벡터를 사용해서 이동하게 됩니다. 단위벡터는 크기가 1인 벡터입니다. 방향을 나타낼 때 사용하기 때문에 방향벡터라고도 합니다. 구하는 방법은 피타고라스의 정리를 사용하면 되는데 원의 반지름. 즉, 벡터의 크기를 1로 두면 (c * cosθ, c * sinθ)가 되는데 c가 1이기 때문에 (cosθ, sinθ)가 됩니다. 벡터의 길이는 스칼라하고 연관이 있습니다. v * k가 되고 (v.x * k, v.y * k)가 됩니다. (k는 실수값입니다.) 여기에서 스칼라는 벡터의 크기를 가지는데 한마디로 스칼라가 크기라는 의미입니다...
어제 말했던대로 오늘은 행렬을 했습니다. 행렬은 어렵기도 하지만 굉장히 중요한 부분입니다. 여기서 이해를 못한다면 그 다음부터 전부 이해하기 힘들어져서 많이 집중 좀 했습니다. 행렬은 행(가로)과 열(세로)로 이루어져 있습니다. 여기서 단위행렬은 E라고 표기하겠습니다. 행렬에 곱셈을 했을 때 자기 자신이 나오게 하는 행렬을 단위행렬이라고 합니다. 단위행렬을 식으로 표현하면 A × E = A가 나옵니다. 주대각선이 1이고 나머지가 0인 행렬입니다. 행과 열이 같은 행렬을 정사각 행렬이라고 합니다. 어떤 수를 곱해도 0이 나오는 행렬을 영행렬이라고 합니다. 영행렬을 식으로 표현하면 A × 0 = 0이 나옵니다. 자신과 어떠한 행렬을 곱했을때 1이 나오게 하는 행렬을 역행렬이라고 합니다. 역행렬을 식으로 표현..