본문 바로가기

분류 전체보기590

코시 곡선 그리기 코시 곡선 그리기 이 강좌에서는 터틀 그래픽(Turtle Graphic)을 이용하여 프랙탈 중 대표적인 코시 곡선을 화면에 표시한다. 터틀 그래픽은 직선을 가지고 그림을 그린다. 현재 위치에서 방향을 결정하고, 해당 방향으로 일정 거리만큼 움직이면, 그 궤적이 하나의 그림이 된다. 마치 거북이가 지나간 궤적이 하나의 그림이 되는 것처럼 동작한다. 제일 먼저 Visual studio에서 win32 어플리케이션을 선택하여 프로젝트를 만든다. 이 때, 빈 프로젝트가 아닌 기본 프로그램이 있는 상태로 만든다. 터틀 그래픽을 구현하기 위해서는 사인(sine) 함수와 코사인(cosine) 함수와 같은 삼각함수가 사용되므로 math.h 헤더 파일을 소스에 포함하여야 한다. 아래 소스와 같이 math.h를 포함하도록 .. 2011. 9. 24.
트리구조 게임브리오에서 가장 중요한 부분은, 트리 구성입니다. 트리 구성을 어떻게 사용하고 있는가를 분석하는 것이 가장 첫 단추라고 보여집니다. 응용프로그램을 만들자고 한다면, 렌더러를 생성하는 방법이 첫 단추겠지만요. 분석을 위해서는 트리라고 생각합니다. 트리를 구성하는 방법은 전통적으로 여러가지 방법이 존재합니다. 일단 손쉽게 생각할 수 있는 방법은 링크드 리스트입니다. 링크드리스트 방법은 순서가 보장되며, 중간에 비어있는 노드들이 없습니다. 그러나 치명적인 약점은 노드를 중복해서 매달 수 없다는 것입니다. 예를 들어서 다음과 같이 트리를 구성했다고 하죠. NiObject는 클래스 하이어라키상 최상위 클래스이고, 트리의 최상위 노드는 NiNetObject라고 하죠. 이 클래스는 실제 게임브리오와는 다릅니다. .. 2011. 9. 24.
트리구조 게임브리오에서는 트리구조를 다룸에 있어서 가변형 배열(Array)를 사용하고 있습니다. 링크드 리스트를 이용할 경우 싱글 링크드 리스트를 이용한다면, 가변형 배열과 비슷한 자료 크기를 가지고 있습니다. 그러나 가장 큰 약점은 하나의 노드를 여러개의 노드가 자식으로 가질 수 없다는 점입니다. 그렇다고 해서 게임브리오가 이 조건을 만족하는가 하면 그것은 아닙니다. 게임브리오는 기본적으로 하나의 노드를 여러개의 노드가 자식으로 가질 수 없습니다. 트리를 구성함에 있어서는 다음과 같은 경우를 따져보아야 합니다. 하나의 노드는 여러개의 부모를 가질 수 있는가? 이 것은 트리를 설계할 때 가장 중요한 부분입니다. 그래픽 엔진을 개발할 때에는 이것을 허용하는 쪽으로 하는 것이 원칙이라고 생각됩니다. 그러면 함수면에서.. 2011. 9. 23.
Bitwise operation III 비트단위 연산은 알고리즘에서도 많이 사용할 수 있는데, 이제까지 봤던 간단한 형태의 연산에서 이제는 알고리즘이라는 것을 적용해보고자 합니다. 일단 보수라는 것을 살펴보도록 할께요. 보수(Complement)라는 것은 반대되는 수를 말합니다. 우리는 알게모르게 보수라는 개념을 많이 사용하고 있습니다. 34-16 을 계산할 때에도 보수라는 개념을 사용할 수 있습니다. 14-6=8 이라는 개념보다는 보수를 사용하면 뺄셈을 덧셈으로 대치할 수 있으니까요. 14-6=10+4-6=(10-6)+4=4+4=8 이란 개념이죠. 여기서 4는 6에 대한 10의 보수입니다. 이진수에서도 보수를 많이 사용하는데 크게 두가지의 보수를 많이 사용합니다. 1의 보수와 2의 보수입니다. 엄밀하게 이야기한다면 -1의 보수와 0의 보수라.. 2011. 9. 23.
Z Buffer vs. W Buffer 게임을 제작하다보면, 폴리곤 겹침에 의해서 겹쳐진 폴리곤이 카메라 이동에 따라서 심하게 떨리는 것을 경험해본 경험들이 있을겁니다. 이런 현상을 깊이싸움(Depth fighting)이라고 하는데, 이것은 카메라로부터 거리를 측정해서 기록하는 Z-Buffer가 표현할 수 있는 해상도 때문입니다. 폴리곤 사이를 충분하게 띄어주었고, Z-Buffer의 해상도를 24비트 정도를 썼다면 이런 현상은 대부분 벌어지지 않습니다. 최신 그래픽 카드는 W-Buffer를 지원하고 있는데, Z-Buffer와 비교해서 어떤 좋은 점이 있을까요? 이것을 이해하기 위해서는 카메라 투영변환(Projection transform)에 대해서 이해할 필요가 있습니다. 3D 그래픽에서 사용하는 카메라는 바늘구멍사진기(pin.. 2011. 9. 22.
Bitwise operation II 비트단위 연산자를 많이 사용하는 경우는 깃발 표시방법입니다. 이것을 일반적으로 비트 플래그(Bit flag)라고 합니다. 비트 플래그는 윈도즈 프로그램을 하다보면 아주 쉽게 찾아볼 수 있는데, 사용법도 간단해서 쉽게 이용할 수 있습니다. 비트 플래그는 각각의 비트가 1인 경우에는 플래그가 켜진 것으로, 0인 경우에는 플래그가 내려간 것으로 생각합니다. 빨간 깃발과 파란 깃발을 정의해서 해보도록 할께요. 빨간 깃발은 Bit 0 을, 파란 깃발은 Bit 1 을 차지하고 있습니다. 이것을 비트 연산으로 처리한다면, 다음과 같이 할 수 있습니다. 비트 플래그들은 모두 2의 멱승으로 구성됩니다. 추후 패킹에서는 보다 일반적인 방법을 설명하겠지만요. RedFlag = 1, BlueFlag = 2 1) 빨간 깃발 올.. 2011. 9. 22.
728x90