You are on page 1of 3

컴퓨터공학속 기하.

20827주제성
나의 진로인 컴퓨터 공학 프로그래밍속에서 기하속개념은 정말 많이 쓰인다.
프로그래밍이란 특정 목적을 달성하기 위해 설계된 알고리즘을 프로그래밍 언어
를 사용하여 구채적인 프로그램으로 작성하는 과정이다. 간단히 프로그래밍을 만
드는 모든 과정이라고 할수있다.
프로그래밍에서 쓰이는 기하개념들은 공간좌표,공간 도형 등이있다.
이들이 프로그래밍에서 어떻게 쓰이는지 알아보도록 하겠다.ㅔ
1.공간좌표
프로그래밍으로 시뮬레이션을 가동시키거나 만들고 넘어서는 게임등의 앱을 개
발할때 하나부터 열까지 만들어서 활용하는 방법이있지만 이는 비효율적이고
시간이 많이들기때문에 보통은 시중에 나와있는 코드를 떼온다던가 엔진 자체를
가져와 사용하는 방법이있다. 특히 게임과 같은 앱을 개발할때 공간좌표라는 개
념이 3차원적 표현을 하기위해서 필수적으로 사용된다.x축 y축 z축 평면에 맵과
오브젝트들을 추가하고 플레이어에게 어떻게 보이는지에까지도 공간좌표는 활용
된다. 공간좌표의 활용은 특히 플레이어의 시점에서 현실적으로 보이기위한 필수

적인 장치이다. 사진
에서 볼수있듯 오브젝트가 관측되기에는 여러 과정이 필요하다
먼저 첫번째 local space(공간)을 공간좌표에 만들어 3차원 입체 오브젝트를 구
성한다.기본적인 맵과 오브젝트를 추가하는 단계이다.
그다음단계은 생성한 공간을 모델 모형으로 변환시켜 모델들을 배치시킨다.
기본적으로 모형들은 원점(0,0,0)을 기준으로 만들기때문에 움직여 배치시키지않
으면 원점에 쌓이기만 한다. 공간좌표를 현실과 특정 비율 (예1m:1블럭)
으로 적절히 배치한다. 다음단계는 배치하여 완성한 전체적인 공간을 특정한 시
점에서 보이게 하는것이다. 시점은 게임에따라 1인칭 혹은 2인칭, 특별한경우 2
인칭시점으로 설정되고 상황에따라 시점이 바뀔수있다. 1인칭인 경우 특정 시야
각의 eyesight(카메라)를 만들어낸 오브젝트(플레이어 모형)에 심어서 플레이어
가 직접 보는것처럼 하고 3인칭인경우 일정 거리에 eyesight를 플레이어위에 위
치시켜서 제3의 입장에서 보이게한다. 2인칭의경우 전채적인 공간을 옆에서 보
이도록 eyesight를 옆에 위치시켜서 3차원 공간을 2차원처럼 보이게 한다.
그 다음단계에서는 공간을 자른다.
정확히 말하자면 플레이어의 eyesight에 들지않은 오브젝트를 자른다.
잘려진 오브젝트의 좌표들은 잘려진상태에서 파편상태로 남아있게되고 플레이으
의 시야에 들었을때 파편이 화면에 보이게된다.
아니면 플레이어와의 공간좌표상 거리가 너무 멀다거나 나올수없는 오브젝트들
은 폐기되어 플레이어를 다시 그 공간에 위치시키기 전까지 파편상태에서 폐기
된다. 그 다음 실제 물리현상등을 구현해야한다.
가장대표적으로는 먼거리의 오브젝트와의 거리를 생동감있게 느끼기 위한 원근
법, 몰입할수있도록 지형지물들을 지나갈때의 시야 흔들림등있다.

2.공간도형.
오브젝트를 만드는 과정에서는 공간도형개념이 사용된다. 오브젝트를 입체적으로
보이게 하기 위함이다. 탑과 같은 경우에는 공간좌표에 높이가 긴 직육면체와
삼각뿔을 조합하고 현실적으로 보이게 다듬는다. 다듬는 과정에서는 전문적인 인
력이 동원된다. 더 입체적이고 사실적으로 보이게 하기위해서 오브젝트를 최대한
현실과 가깝게하기위해 디자이너들이 설계하고 따로 만들고 다듬어서 완성된 결

과물을 공간좌표에 추가한다.


충분히 다듬은 오브젝트는 공간좌표에 추가하여 하나의 맵으로서 작용할수있다.
3.벡터
이 과정들을 통해 공간이 완성되면 캐릭터를 움직일 방법도 필요하다
벡터란 힘의크기와 방향을 가지고있는 물리량이다
캐릭터에서 벡터는 속도와 이동방향등을 구현할수있다.
캐릭터가 날아다니는 경우가 아니라면 평면에서 z축에서의 위치변화는 거의 없
으므로 z축을 캐릭터에 수직으로 하고 시야가 바뀌기 전에 바라보는 방향을 기
준으로하여 시야가 변했을때 캐릭터가 바라보는 방형만큼의 각을 쎄타라고 정한
다. 쎄타각을 알고 캐릭터의 속도를 알면 벡터값을 구할수있다
구한 벡터값으로 캐릭터의 위치이동, 방향전환, 속도를 결정할수있다.
이들을 컴퓨터언어로 프래그래밍하기위해서 게임 엔진이 있더라도 벡터개념을

사용할수밖에없다.
그림과 같이 원래시야와 바뀐시야와의 각도차이를 쎄타 라고했을때
1인칭 시점 기준으로 플레이어의 정면주시방향은 eyesight의 방향과 일치하기때
문에 캐릭터는 쎄타각만큼 x축 방향으로 회전하게된다. 만약 원래 좌표가 (0,0,
0)이고 움직이고 싶은 좌표가 (2,2,0)이라면 쎄타각이 45도가 되게하고 벡터가
2루트2 벡터가 되게하면 되는것이다. 그렇게되면 캐릭터는 먼저 45도 회전하고
이동하기를 시작할것이다. 이처럼 캐릭터를 움직이도록 설계할수 있지만 직접 움
직이게 하는것은더 간단하다. 컨트롤러(마우스등)을 사용하여 쎄타각이 45도가
되게 맞추고 이동키를 눌러 움직이게 하면 되는것이다. 그럼 이방법만 사용하면
되는 것이냐 라는 의문이 생길수있지만 모든 캐릭터를 플레이어가 조작하는것이
아니다. 게임속 npc(구현된 캐릭터)가 움직여야 하는 상황 (예를 들면 캐릭터를
따라가게 한다던가 그 npc가 정해진 길을 움직이도록 할때)에는 벡터를 사용하
여 움직이게 해야한다. 이처럼 벡터는 프로그래밍에서 특히 게임에서 필수적인
요소이다. 기하학 개념속 프로그래밍에서 사용되는 것들은 훨씬많다.그런 개념들
을 이용하여 명령어를 작성한다면 훨씬 효율적으로 제작을 할수있다.
만약 벡터를 프로그래밍에서 사용할수없다면 캐릭터를 공간좌표 하나하나 설정
하여 이동하도록 해야한다. 하지만 공간좌표마저 사용할수없다면 그땐 3차원프
로그래밍을 할수는 있을까. 내생각으론 불가능하다
프로그래밍에서 쓰이는 물리법칙또한 어떻게든 기하와 연결되어있다. 가장 기본
적인 물리법칙은 포물선운동같은 경우에 프로그램에서 이를 구현하기위에 오브
젝트의 운동을 벡터를 사용하여 명령어를 작성한다.
이 활동을 하고 느낀점은 프로그래밍에서 사용되는 기하개념에 더 알고싶다
더 자세히 알고 더 많이 알아서 나중애 프로그래밍을 할때 기하에대한 지식이
도움이 될것이다.

You might also like