목록공부 (292)
응애맘마조
GameObject.h의 파일이 조금 수정되었습니다. 중요한 부분은 private와 protected로 바뀌었습니다. static void CreateStaticMember과 static void DeleteStaticMember는 static 함수인데 프로그램이 실행될 때 딱 한 번 실행됩니다. 앞으로 로컬 포지션과 월드 포지션을 사용합니다. LocalPos, WorldPos 이름의 함수로 사용합니다. 이동 시킬 때는 +=을 사용합니다. 이때 포지션 이름은 MoveLocalPos, MoveWorldPos입니다. 위치를 고정 시킬 때는 =을 사용합니다. 이때 포지션 이름은 SetLocalPos, SetWorldPos입니다. 이 상황에서 만약 부모 객체가 있다면 정규화와 Invert(역행렬)을 곱해서 부모..
자전과 공전을 하는 태양계를 만드는 것이 과제였습니다. 가운데 사각형은 태양이고 조건은 태양은 자전하지 않는 것이었습니다. 공전 방향도 제각각 만들었습니다. #include "framework.h" #include "MainGame.h" MainGame::~MainGame() { } void MainGame::Init() { HBITMAP m_hOldBitmap, m_hBitmap; HDChdc = GetDC(g_hwnd); g_MemDC = CreateCompatibleDC(hdc); m_hBitmap = CreateCompatibleBitmap(hdc, 800, 600); m_hOldBitmap = (HBITMAP)SelectObject(g_MemDC, m_hBitmap); ReleaseDC(g_hw..
이번엔 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축을 표현했습니다. 동영상에 보시다시피 회전값을 주어도 움직이는 방향이 그대로인 것을 알 수 있습니다. 하지만 위의 동영상은 수정 후 영상입니다. 회전된 각도에 따라 움직이는 방향이 달라지는 것을 확인할 수 있습니다. 읽어주셔서 감사합니다.
오늘은 월드 공간과 로컬 공간에 대해서 했었습니다. 월드 공간의 x축과 y축은 고정되어 있습니다. 이 좌표를 통해 SRT 하는 것을 월드 공간의 변환이라고 합니다. 이렇게 해서 자기만의 공간이 있는 것을 로컬 공간이라고 합니다. 월드 공간과 로컬 공간은 다른 공간입니다. 회전 행렬의 cθ sθ 0 0 부분은 x축이고, -sθ cθ 0 0 부분은 y축 입니다. 전방 선언은 헤더 파일 위에 미리 선언을 해서 객체 생성시 알게 해주는 정도로 이해하면 됩니다. 오늘은 간단하게 배워서 내용이 짧습니다. 읽어주셔서 감사합니다.