본문 바로가기

전체 글84

벡터(Vector) 벡터, 사전적 정의는 다음과 같다. 벡터는 수학, 물리학, 공학에서 크기와 방향을 갖춘 양을 일컫는다. 막연한 말이다. 대체 무엇을 의미하는 걸까? 또, 벡터를 검색하면 자동으로 스칼라라는 개념도 나온다. 대체 이 둘은 무엇이길래 우리를 이렇게 어지럽게 만드는 걸까? 감수성만 충만한 문과생의 입장에서 프로그래밍의 벡터를 정리하기란 어려웠지만 열심히 찾고 또 찾아 도전해보았다. 벡터는 컴퓨터 그래픽스에서 뗄 수 없는 개념이다. 컴퓨터는 공간을 좌표로 계산한다. 특정 좌표에서 다른 좌표로 이동할 경우, 이 이동에는 방향성과 속력 즉, 힘이 들어간다. 이는 그림으로 표현하면 다음과 같다. 한 정점에서 다른 정점으로 이동하는 방향과 힘을 가진 것, 이것이 기하학적 벡터(Euclidean Vector)이다. 위 .. 2022. 12. 16.
[Game] 변환행렬 컴퓨터 화면은 좌표로 이뤄져 있다. 특정 도형은 화면의 좌표 위에 존재하게 되고 만약 사각형이 있다고 가정할 경우 좌표에 사각형의 네 각에 해당하는 정점(Vertex)가 찍혀 있을 것이다. 2차원 화면에서 이 네 개의 vertex는 x와 y의 좌표값을 가진다. 만약 이 도형을 움직이고, 크기를 키우거나 줄이고, 회전을 시키고 싶다면 어떻게 해야 할까. 단순히 좌표값을 바꾸면 된다. x 축을 기준으로 + 100을 이동하고 싶다면 네 정점의 좌표값의 x 좌표를 + 100 하게 되면 + 100만큼 이동한 것으로 보인다. 하지만 하나하나 이렇게 좌표를 입력하기 보단, 행렬을 이용하여 입력되는 값에 맞춰 자동으로 계산이 되게 하는 것이 훨씬 더 깔끔하게 적용이 된다. 이때 이용하는 것이 바로 변환행렬이다. 변환행.. 2022. 12. 15.
[Programing] 정적 & 동적 라이브러리 동적(Dynamic) & 정적(Static) 라이브러리 이 두 가지 개념을 이해하기 전에 우선 라이브러리에 대한 개념을 확인해야 한다. 라이브러리(Library)란? 소프트웨어를 만들 때 쓰이는 클래스나 서브루틴[1] 들의 모임을 가리키는 말이다. 다른 프로그램들과 링크되기 위해 존재하는, 하나 이상의 서브루틴이나 함수(Function)들의 집합 파일이다. 또한, 링크될 수 있도록 보통 컴파일 된 형태인 목적코드(Object Code)[2] 형태로 존재한다. 미리 컴파일 되어 있어서 컴파일 시간도 단축된다. 라이브러리의 목적 라이브러리는 코드 재사용을 위해 조직화된 초창기 방법 중의 하나이며 많은 다른 프로그램들에서 사용할 수 있도록 운영체제나 소프트웨어 개발 환경제공자들에 의해 제공되는 경우가 많다. .. 2022. 12. 15.
행렬 행렬이란 무엇일까? 행렬은 간단하게 이야기하자면 표를 간략화 한 것이다. 행렬의 성분 ( i, j ) 성분을 각각 행과 열로 대응시켜 정의를 하는 것을 의미한다. 수학을 공부하지만 수학을 게임에 적용하여 사용할 것이기 때문에 자세한 내용은 생략하고 몇 가지 개념만을 집고 넘어갈 생각이다. 정방행렬 - 행과 열의 수가 동일한 정사각형의 행렬을 의미한다. 이 가운데 행과 열의 지표가 같은 원소( i = j )를 대각성분이라고 한다. 전치행렬 - 행렬의 행과 열을 맞바꾼 행렬을 의미한다. 가령 3 * 2의 행렬 A가 있다면 원소는 그대로 두고 2 * 3으로 바꾼 행렬 A^T가 바로 전치행렬이 된다. 단위행렬(uint matrix) - 항등행렬(identity matrix)라고도 하며 주대각선의 원소가 모두 1.. 2022. 12. 14.