ExampleApplication 클래스는 Ogre에서 기본적으로 제공하는 Framework 클래스이다. 이 클래스가 Framework가 될 수 있는 이유는 이 클래스를 상속 받아 가상함수를 구현하면 하나의 3D 어플리케이션이 만들어지기 때문이다. ExampleApplication 클래스의 구조와 흐름을 파악한다면, Ogre의 전체적인 흐름까지 쉽게 파악할 수 있을 것이므로 Ogre의 첫번째 분석에 ExampleApplication에 대해서 집중적으로 살펴보았다. 아래는 ExampleApplication의 클래스 관계도이다. 매우 심플한 구조인것을 알 수 있다. 심플하다는 것은 확장성이 뛰어나다는 것을 의미하며 또 그만큼 견고하다는 의미라고 생각된다. (너무 Ogre를 좋게만 보는거 아닌가 싶다)
위의 클래스 관계도에서 파악할 수 있는 몇가지를 살펴보면, ExampleApplication 클래스는 RenderWindow, Root, SceneManager, FrameListener, Camera를 속성맴버로 갖고 있다. (SceneNode는 아니다) 생성과 소멸에 관한 Composition 관계는 ExampleApplication은 Root와 FrameListener를 생성하며 Root가 RenderWindow와 SceneManager를 생성한다. 그리고 Camera는 SceneManager가 생성하여 관리한다. 일단 여기서 가장 중요한 FrameListener와 SceneManager에 대해 간단히 설명하면, FrameListener는 사용자의 Interaction에 대해 렌더링될 각 Frame을 컨트롤하는 역활을 한다. 그리고 SceneManager는 화면상에 렌더링될 SceneNode 들을 관리해준다.
SceneNode는 직접적으로 ExampleApplication과는 관계가 없지만 Ogre에서 매우 중요한 개념(대부분의 3D엔진에서 중요한 용어이며 개념이다)이다. Ogre에서 SceneNode를 말하려면 Entity도 함께 언급을 해야한다. Entity는 3차원 Geometry 좌표로 구성한 Mesh라고 할 수 있는데, 이 Entity가 SceneNode에 붙게된다. SceneNode는 위치와 방향 값을 갖고 있으므로 Entity와 SceneNode가 붙게되면 특정 위치와 방향으로 놓이게 되는 물체가 정의되는 것이다. 여기서 중요한 것은 하나의 SceneNode에는 여러개의 Entity가 붙을 수 있다는 점이다. 참고로 빛(Light)도 SceneNode에 붙일 수 있다.
관계도에서 하나 더 알 수 있는 것은 ExampleApplication의 모든 맴버 함수는 추상함수라는 점이다. 즉, 앞서 언급한것처럼 ExampleApplication을 상속받아 추상함수를 구현하게 되면 하나의 어플리케이션이 만들어진다는 것이다.
이제 ExampleApplication의 추상함수들의 용도를 살펴보면, 유일한 공개(public) 함수인 go()와 보호(protected) 접근자 함수인 그외의 함수들로 구성되며 그 목적은 다음과 같다.
go – WinMain이나 main, 또는 Rendering Thread에서 직접 호출되며 SceneNode 등과 같은 것을 화면상에 렌더링 한다. 내부적으로 setup 함수를 호출하고 조건무한루프 함수인 Root의 startRendering 함수를 실행한 뒤, destroyScene 함수를 호출한뒤, 일반적으로 어플리케이션이 종료된다.
setup – 가장 많은 일을 하는 함수로, 리소스 파일을 읽어들이고 Root 클래스를 초기화하며 Root 클래스를 통해 SceneManager를 생성시킨다. 그외에 카메라, 뷰포트, SceneNode를 생성을 담당하는 함수등을 차례로 호출한다.
destroyScene – 어플리케이션이 종료되기 직전에 더 이상 필요하지 않을 SceneNode를 메모리에서 제거한다.
setupResources – 리소스(이미지, Mesh, 스크립트 등)의 경로를 외부 cfg로부터 읽어들여 추후에 읽어들일 리소스의 경로를 파악한다.
configure – 사용자에게 3D API로 OpenGL이나 Direct3D를 쓸것인지와 해상도, 전체화면여부등을 결정할 수 있도록 하고, 결정된 사항을 기반으로 3D 환경을 설정한다.
chooseSceneManager – sceneManager를 생성한다.
createCamera – 카메라 생성
createViewport – Viewport 생성. Viewport는 실제 렌더링될 창(Window)의 배경색 및 픽셀 너비와 높이 값등을 가지고 있다.
createResourceListener – 리소스를 실제로 Loading할때 사용자에게 현재 얼마만큼의 리소스가 Loading되었는지를 파악할 수 있는 Listener 클래스를 생성한다.
loadResources – 실제 리소스를 Loading 한다.
createScene – 다른 추상 함수와는 달리 순수 추상함수로써 화면상에 렌더링할 SceneNode를 생성한다.
createFrameListener – 사용자의 Interaction을 받거나 그외의 다른 이유를 통해 변경된 사항을 매 Frame에 반영할 수 있도록하는 Listener를 생성한다. Ogre를 분석때 처음에 ExampleApplication을 분석하는 것처럼 다음에는 ExampleFrameListener를 분석해 볼것이다. 일단 여기서는 간단이 앞서 언급한 내용만 알아도 충분할 것같다.
일단 ExampleApplication에 대한 개념적인 것을 정리했다. 다음에는 실제로 ExampleApplication을 상속받아 화면상에 하나의 모델을 나타내는 예제를 만들어보는 것으로 해서 ExampleApplication에 대한 정리를 마루리할 것이다.
여기서 ExampleApplication의 이름을 ExampleApplication이라고 정의했는지 생각해 볼 필요가 있을 것 같다. ExampleApplication은 단지 Ogre에서 최소한 실행되는 3D 프로그램이 갖추어야할 것들만을 가지고 있는 예제에 불과한것같다. 즉, 처음 Ogre에 접근하는 개발자들에게 ExampleApplication을 상속받아, 얼마나 쉽게 3D 프로그램을 개발할 수 있는지를 보여주기 위한 Example에 불과한것이 아닌가 싶다. 물론 예상일뿐이지만 말이다.
오른손잡이를 기준으로 하였을 경우, 왼손 엄지의 문형이 주인격적 성향을 나타낸다고 보면 된다. 반대로 왼손잡이일 경우 오른손엄지의 문형이 주인격적 성향을 나타낸다. 왼손 엄지를 기준으로 하고, 오른손의 엄지와 양손 검지에 나타난 지문의 유형을 참고해 보면 된다.
1. 지문 유형에 따른 성향별 특징
호형문
기본적으로 온화하고 안정적이지만 도전정신은 크지 않다. 따라서 체계적인 지도와 규범으로 이끌어주어야 한다.
기본 특질 : 호형문의 기본적인 특징은 온화하고 안정적이며 인정이 많고, 보수적이며 엄격한 편이면서도 융합을 잘하는 성향이다. 정해진 계획이 갑작스럽게 변하는 것을 좋아하지 않으며, 개인의 사생활을 중요하게 여기기 때문에 몇몇 절친한 사람들과의 깊이 있는 교유를 선호한다. 충성심이 뛰어나지만 도전적이지 못하기 때문에 지도자적 자질 역시 약한 편이다. 어떤 일이든지 지시와 규칙에 의해 실행하길 원하며, 조건이 명확한 상황에서 집행 능력을 발휘한다. 학습에 대한 반응은 매우 양호하지만, 자극의 여부에 의해 상대적인 차이가 크게 나타난다.
성격상의 장점 : 안정감이 높고 학식이 풍부하며 깊게 생각하는 편이다. 위기에 직면했을 때 차분히 대응하며, 예의 바르고 독립심이 강하며 복잡하지 않고 단순한 삶을 선호한다.
성격상의 단점 : 어떤 강렬한 느낌을 두려워하고 갑자기 일어난 돌발상황에 두려움을 느낀다. 사생활이 침해당하는 것을 꺼려하며, 만족스럽지 못한 환경 혹은 공허한 느낌에 대해 불안해한다. 창조력과 열정을 발휘하는 능력이 비교적 풍부하지 못하다.
성장시키는 방법 : 스스로 내린 결정이 성취되는 과정을 체험할 수 있는 기회를 제공하고, 본인의 감정을 마음에만 담아두지 말고 밖으로 표현할 수 있도록 도와주어야 한다. 다른 사람들이 자신의 내면세계에 대해 알고자 하는 것을 스트레스나 사생활 침해로 받아들이지 않도록 배려해야 한다. 이런 아이에게는 ‘너는 충분한 능력을 가지고 있으며 어떤 일도 해낼 수 있다’고 인정해 주고, 봉사활동 내지는 자원봉사에 적극 동참할 수 있도록 유도하는 것이 좋다. 또 단체활동에 참여해 자신의 의사를 발표하고, 자신에게 일어난 일에 대해 적극적으로 이야기할 수 있는 분위기를 조성해 주어야 한다.
대화 요령 : 명확한 지시 내지는 정확한 내용을 표명해야 한다. 과장된 표현이나 사실이 아닌 것을 말했을 경우 쉽게 역효과를 낼 수 있으므로, 안정감과 공정함과 진실성을 강조해야 한다. 분명하지 않거나 사전에 계획된 일이 아닐 경우에는 쉽게 내면의 저항을 일으킬 수 있다. 친절하게, 규범적·규칙적으로 이끌어가는 것이 가장 적합한 대화 요령이다.
정기문
감수성이 풍부하고 창의적이지만 충동적이다. 따라서 끊임없는 존중과 관심을 쏟아주어야 한다.
기본 특질 : 감성적이며 감수성이 풍부하고 정서적 반응이 비교적 직선적이다. 자유스러운 방식으로 일을 처리하며 매우 민감하다. 단체활동과 융화를 중시하지만, 어떤 일을 결정할 때 충동적으로 하는 성향이 있다. 성격이 급하고 잘 기다리지 못하는 편이다.
성격상의 장점 : 감수성이 강하고 매우 열정적인 사람으로서, 창조력이 뛰어나고 다른 사람의 아픔을 민감하게 느끼며 연민이 많다. 감정 반응이 강렬하고 낭만적인 것을 추구한다. 신뢰와 온화함으로 대인관계를 맺는다.
성격상의 단점 : 상대방의 거절을 두려워하는데, 이는 소외당하는 느낌을 매우 힘들어하기 때문이다. 누군가에게 자신이 중요한 사람이라는 느낌이 들지 않거나 의미 없게 받아들여지는 것을 매우 싫어한다. 스스로 정한 기준에 도달하지 못했거나 뭔가 틀렸다는 느낌이 강하게 들기 때문이다. 또한 인내심과 감정 조절 능력이 부족하며, 습관적으로 상대방이나 사물을 비교하고 비판하기도 한다.
성장시키는 방법 : 안정감을 키워주고 일관된 행동 모델을 제시해 심한 감정의 기복에 시달리지 않도록 도와주어야 한다. 단체활동에 주도적으로 참여할 수 있는 기회를 제공해 자기만의 세계에서 빠져나올 수 있도록 도와주고, 다른 사람들과의 관계에서 도피하지 않도록 해야 한다. 감정의 기복이 심할 때는 먼저 스스로 평정을 찾을 수 있는 시간을 주고, 그런 다음 어떤 결정을 내릴 수 있도록 유도해야 한다. 일상생활을 즐기고 광범위한 영역에 걸쳐 있는 자신의 흥미를 채울 수 있도록 도와주며, 진실한 성취감을 맛볼 수 있도록 배려해야 한다.
대화 요령 : 다른 사람으로부터 존중과 관심을 받기 원하므로 친절하게 대해주고, 심리적인 안정감을 느낄 수 있도록 배려해야 한다. 다른 사람과 비교하거나 비평하지 말고, 도전적인 면을 피하라. 단체의 목표를 향해 함께 노력하자고 권하고 명확한 목표를 정해서 실행하도록 해야 한다.
반기문
신뢰와 책임감이 크지만 자기주장이 강하다는 단점을 가지고 있다. 따라서 일방적으로 주문을 하기보다는 개성을 충분히 살려주어야 한다.
기본 특질 : 자유스러운 가운데 자기주장이 강하고, 낭만적이지만 자의식이 분명하며, 충성심과 강인함이 있다. 말 바꾸는 것을 싫어하고, 유머러스한 대화와 재치로 일을 처리하며, 다른 사람과의 관계에 성실하게 반응하고 직접적으로 대응한다. 반면 자신의 정서 조절 능력은 약한 편이다.
성격상의 장점 : 신뢰를 중시하고 책임감이 있는 사람이다. 다른 사람에게 충성을 다하고 일을 처리하는 데 있어서 우회적인 방법을 사용하지 않으며 실험정신이 강하다. 인정이 많고 다른 사람의 능력을 보호하고자 한다. 관찰력이 뛰어나며 매사에 의문이 많고 기지와 위트가 뛰어나며 민감하다.
성격상의 단점 : 상대방이 도움을 요청했을 때 적극적으로 돕고자 하는 성향이다. 그러나 위험한 상황에 직면하거나 상처를 받았을 경우 적극적으로 대처하지 못하고 불안해한다. 또 이러한 상황에 대해 스스로 굴복했다고 여길 경우 심한 무력감에 빠지기도 한다. 자신이 의지하고 따르는 사람으로부터 호의적인 반응을 얻지 못하면 아예 그들과의 교유를 단절해 버리기도 한다.
성장시키는 방법 : 자기 자신이 인생의 주인공이라는 생각이 들도록 배려해야 한다. 자신감을 갖고 상대방과 외부세계에 대해 믿음을 갖도록 유도한다. 어느 정도의 불확실성이나 불안감 역시 생활의 일부분이라고 생각하고 진심으로 받아들이도록 교육해야 한다. 상대방에 대한 의심이나 두려움에 대해 깊이 생각하고, 바쁘게 움직이는 것이 근심과 걱정을 줄이는 방법임을 알려준다. 대항하거나 도피하는 것은 두려움의 표현이라는 것을 깨달을 수 있도록 도와주고, 정면에서 적극적으로 대처하도록 유도해야 한다.
대화 요령 : 자기만의 스타일과 창의적인 표현을 인정하고 존중해 주어야 한다. 풍부한 상상력을 발현시킬 수 있는 공간을 마련해 주고 내면의 상태를 중시하고 평형을 유지하도록 배려해야 한다. 진심으로 자녀의 특성을 이해하고 받아주려는 노력이 필요하다.
두형문
용감하고 용의주도하지만 자신의 약점을 두려워한다. 따라서 온유한 방식으로 대화를 풀어나가야 한다.
기본 특질 : 매사에 엄격하고 합리적이며 공평하다. 인격을 중시하고 노력을 많이 하지만, 간혹 극단적으로 일을 처리하는 모습을 보이기도 한다. 용감하며 목표 주도형이다.
성격상의 장점 : 용감하고 과감하며 공정하고 다른 사람들의 능력을 보호해 주는 타입으로, 사람을 끄는 매력을 가지고 있다. 스스로 문제를 해결하고 우정을 중시하며 생각이 깊다.
성격상의 단점 : 고집이 세고, 비평적이기도 하며, 유약함을 싫어한다. 자신의 약점이 드러나는 것을 극히 두려워하고 부정확한 것을 싫어한다. 남에게 의지하거나 도움받는 것에 대한 심리적 거부감이 강하며, 이를 몹시 꺼려한다. 다른 사람에게 존중받지 못하거나 무시당하는 것을 못 견뎌한다. 단체생활에 화합하지 못할 것 같은 두려움이 강하며 과도하게 존엄성을 중시한다.
성장시키는 방법 : 다른 사람에게 도움받기를 꺼려하는 것은 자기 내면이 약하기 때문이라는 점을 인지시키고, 상대의 호의에 대한 과도한 거절은 상대에게 압박감이나 상처를 줄 수도 있다는 점을 깨달을 수 있도록 도와주어야 한다. 자신의 연약함은 스스로 성장할 수 있는 도구이므로, 자신의 약점에 대해 너그러운 마음을 가질 수 있도록 지도한다. 행동하기 전에 먼저 다른 사람들의 의견을 충분히 수렴하고, 본인의 의사와 다른 경우 적당한 방법을 찾아내 대처하고 내면의 평정을 유지하도록 유도한다. 상대방의 관심과 사랑을 받아들이고 대화하는 데 적당한 방법을 모색하도록 격려한다. 자신을 보다 가볍고 유연한 상태로 만드는 방법을 배울 수 있도록 적당한 기회를 제공한다.
대화 요령 : 매사에 목표를 분명히 하고 결과를 명시해야 하며 개성을 존중해 주어야 한다. 지도자적인 성향을 활용해 자신에게 주어진 권한의 범위를 최대한 분명하게 명시해 주는 것이 좋다. 온유한 방식의 질의문답 형태의 대화법이 효과적이다. 내성적이기 때문에 외형보다는 내면의 세계를 중시한다. 따라서 칭찬은 공개적으로 하되 지적은 개별적으로 해서 자존심을 지켜줘야 한다.
쌍기문
적응 능력이 강하고 긍정적이지만 효율성이 떨어지는 면도 있다. 따라서 지시는 명확하게, 계획은 엄격하게 관리해 주는 것이 좋다.
기본 특질 : 다른 사람을 언제나 긍정적인 시선으로 바라보며, 안정적인 인생을 선호하고 중용의 도를 추구한다. 남을 도와주는 것을 즐기고, 직접적으로 거절하는 것을 힘들어하며, 완벽주의적인 경향이 있고 매사에 생각이 많다.
성격상의 장점 : 자신이 주도적으로 다른 사람에게 관심을 갖고 몸으로 실천한다. 책임감이 강하고 조정 능력이 탁월하며, 환경이나 상황에 따른 적응 능력이 뛰어나 새로운 것을 쉽게 받아들이며 사랑이 많다.
성격상의 단점 : 어떤 일을 하는 데 있어서 충돌과 대립을 두려워하는데, 이는 본인의 입장이 곤란해지는 상황이나 불편한 감정을 싫어하기 때문이다. 스스로의 에너지를 낭비하는 일 혹은 정신적으로 상처를 입는 일을 꺼려하며, 어떤 중대한 결정을 할 때 생각이 너무 많아 때를 놓치거나 효율이 떨어지기도 한다. 거절하기를 어려워하고 잡다한 일이 너무 많아 시간 관리에 어려움을 겪는다.
성장시키는 방법 : 자신이 진정으로 원하는 것과 즐거워하는 것에 관심을 갖고, 힘들거나 화가 났을 때 자신의 불만을 충분히 표현할 수 있도록 배려한다. 자신이 정말 소중한 사람이라는 것을 일깨워줘야 한다. 스스로에게 스트레스를 주는 행동을 하고 있지는 않은지 돌아보도록 주의를 환기해 준다. 정말로 먼저 해야 할 일과 나중에 해도 되는 일에 대한 우선순위와 시간 안배를 정확히 하고 있는지 점검해 준다. 다른 사람을 사랑하듯 자신을 사랑할 수 있도록 끊임없이 일깨워야 한다.
대화 요령 : 자신의 의견과 생각을 명확하게 표현하고 결정하도록 하라. 지시는 명확하게 하고 계획은 엄격하게 관리해 주어야 한다. 평소 은연중에 자신의 생각이나 내면의 느낌이 표출될 수 있기 때문에, 아이가 평소에 하는 말을 경청하고 적당한 시기에 결정하도록 유도하라.
2. 지문 유형에 따른 미래의 직업
내 아이에게 딱 맞는 역할, 타고난 잠재력을 최대한 발휘할 수 있는 직업은 과연 무엇일까?
호형문 _ 안정형. 공무원 등 안정적인 직업
정확한 지시 및 정해진 규범대로 일하는 보수적인 타입이므로 실무적인 일에 적합하다. 새로운 도전보다는 기존의 안정적인 분야를 선호하며, 낯선 사람에게 자기의 생각이나 가치를 표현하는 데 익숙하지 않다. 안정성을 추구하고 자기주장을 관철시키기보다 주어진 규범에 따라 일하기를 좋아하므로, 사무적이고 정확한 관리 능력을 필요로 하는 직장에서 자신의 특기를 발휘한다.
일반적으로 기업의 재무관리나 조직관리 및 사무 진행에 적합한 능력을 지니고 있다. 새로운 업무나 사람에 대해서는 한 걸음 뒤로 물러서며 부끄러움을 잘 타고 소극적이지만, 일단 시작하면 매우 안정적인 집행 능력을 발휘한다. 새로운 업무라도 일단 경험해 보고 어느 정도 익숙해지면 기존의 사람들과 적절히 협력하여 공정하고 정확한 집행자가 된다.
사생활이 침해되는 것을 몹시 싫어하며 미지의 세계에 대한 도전을 기피하는 편이다. 일반적으로 보면 정열을 표출하는 일이 드물지만, 일단 선택한 일에 대해서는 쉽게 변하지 않는 태도를 견지한다. 외적으로 볼 때는 경쟁을 싫어하고 매사에 사무적이며 엄숙하고 안정된 정서를 가지고 있다. 내성적으로 보이는 경우가 많다.
적합한 직업 부류
_ 사무 능력을 요하는 분야, 안정적인 기술 분야
_ 전원에서 일할 수 있는 직업
_ 경리, 자료관리, 환경 관련 사업, 전문적인 농부, 운전기사
_ 공무원, 교사, 의사, 전문기술직, 회계사, 세무사
정기문 _ 감성형. 교사나 고객관리자 등 친절과 성실성이 필요한 직업
감수성이 풍부하며 매우 친절하지만 일처리나 대인관계에서 감정적일 때가 많다. 자유스러운 분위기를 좋아하며 무리한 요구나 엄숙한 환경을 피한다. 단체생활 자체를 좋아할 뿐 아니라 열정적이고 적극적으로 봉사한다. 자신의 생각이나 감정을 밖으로 드러내 표현하기를 좋아하고, 남을 적극적으로 이해하려고 하며, 직장에서의 친화력도 뛰어나다.
자신을 지지해 주는 환경일 때 일의 능률이 오르고 신나하지만, 반대의 경우 능률이 많이 떨어진다. 남의 말에 귀를 잘 기울이며, 주변 환경의 영향을 많이 받고, 미래에 대한 대비보다는 현실을 주로 바라보는 편이라고 할 수 있다. 매우 창의적이라는 장점이 있지만, 결정적인 순간에 판단력이 약하고 경쟁이 치열한 환경에서는 견디기 힘들어하며 구속을 싫어하는 면은 직장생활에서 단점으로 작용하기도 한다.
정해진 삶을 좋아하며, 감정 표현이 적극적이어서 좋고 싫음이 얼굴에 분명히 드러난다. 때에 따라서는 약간 안일하고 피동적인 경우도 있으며, 스트레스를 극복해 내는 힘이 부족하고 분위기에 따라 쉽게 변하며 추진력이 약하다. 특히 장기적인 계획과 목표 수립을 어려워한다.
적합한 직업 부류
_ 서비스업, 교육, 기술
_ 인사관리 및 고객관리
_ 교사, 엔지니어, 예술가, 가수
_ 사회사업, 간호사, 특수교육
_ 컨설턴트, 서비스관리, 마케팅 매니저
반기문 _ 창의형. 작가나 감독 등 창의적이고 개성이 강한 직업
일반인들과는 많이 다른 사고방식의 소유자다. 일처리와 대인관계에서도 창의적인 성향이 매우 강하다. 일반적인 규범과는 다른 방식으로 일을 처리하기 때문에 다른 사람들을 긴장하게 만들기도 한다. 독특한 자기만의 스타일을 발산하고 색다른 아이디어로 신선함을 주며 창의적이고 개성이 강하다. 연구 능력이 뛰어나기 때문에 연구개발 분야에서 우수한 능력을 발휘한다. 흥미 있는 일에 몰두하여 연구하고 질문하기를 좋아하고, 그에 따라 비판적인 태도를 보이기도 한다.
창의적이며 선택 능력이 탁월하고 민감한 관찰력의 소유자다. 특히 자신의 경험과 지식을 중시하며 자기주장이 확실하고 의지력이 강하다. 일반인들과는 다른 독특한 주장을 많이 하기 때문에 자신을 이해하지 못하는 사람들에게는 쉽게 받아들여지지 못하며, 그런 사람들과 대화하기를 힘들어한다. 자기 내면의 세계를 적극적으로 표현하지 않는 편이다.
외적으로는 의문이 많고 관찰력이 세밀하며 도전적인 모습을 보여주는 경우가 많으며, 뛰어난 유머감각으로 좌중을 압도하기도 한다.
적합한 직업 부류
_ 창의적인 시장 개발, 일반적인 개념에서 벗어난 독특한 기술개발 분야
_ 연구단체 및 개발부
_ 작가, 예술가, 영화감독
두형문 _ 전략형. 장군이나 CEO 등 주도성과 담판 능력이 필요한 직업
두형문은 넓은 시야에서 사고하고 자기주관이 분명하며, 일이나 대인관계에서 명확한 결과를 요구한다. 따라서 일반적으로 독립 창업하는 경우가 많고 회사의 CEO, 마케팅 매니저, 국가 지도자 등으로 일하는 경우가 많다. 도전적인 목표를 좋아하고 지도력이 특출하며 관리 능력이 탁월하다는 얘기다. 특히 내면이 강하고 독립적이며 경쟁이 치열한 직장 환경에서 더욱 확실한 리더십을 발휘하고, 거의 습관적으로 많은 일을 리드해 나간다.
목표 지향적이며 개척정신이 투철하고 한번 설정한 목표는 철저한 계획과 관리로 반드시 이뤄낸다. 실질적인 물건을 좋아하며 복잡한 문제에 도전해 해결하기를 즐긴다. 목표를 향해 불도저처럼 나아가는 사람을 연상하면 두형문의 직업적인 특질을 쉽게 이해할 수 있을 것이다.
정서적으로는 매우 침착하며 객관적인 분석을 바탕으로 일을 판단하고 관리하며 효율을 중시한다. 관계를 맺기가 쉽지 않지만, 한번 신뢰를 맺으면 의리가 강하다. 자기 내면의 세계를 표현하는 데는 적극적이지 못하지만, 한번 일을 추진하기 시작하면 대단히 열정적이며 패기가 넘친다. 강하고 활기차고 성과를 창출해 내며 사실적인 것을 추구한다. 깨끗하고 엄격하며 세밀하다. 감정 조절을 잘하며 깊고 멀리 볼 줄 알고, 용감하고 담대하다. 하지만 때로 극단적인 성향을 드러내기도 한다.
적합한 직업 부류
_ 주도성과 담판 능력을 필요로 하는 일
_ 기획 혹은 관리부
_ 연설가, 엔지니어, 지휘자, 군 장성, CEO
_ 독립 창업 경영인
쌍기문 _ 조정형. 기획자나 컨설턴트 등의 정보 수집과 경쟁이 강한 직업
생각이 많은 쌍기문은 정보를 수집하는 일에 능하다. 일처리나 대인관계에서도 가장 원만한 방법을 찾아 해결한다. 충돌과 대립을 피하면서 다방면으로 생각하고 결정하는 합리적인 성향이다. 다른 사람들과의 관계에서도 우수한 정신력을 바탕으로 자기의 주장을 내세우기보다는 전체의 의견을 수렴하는 편이며, 경쟁이 치열한 직장 환경에서 더욱 탁월한 기질을 발휘한다.
조정 능력과 협조성이 좋으며, 평소에도 생각을 많이 하고 일에 있어서 늘 공평을 기한다. 적응 능력이 좋고 변화에 도전하기를 즐기며, 환경에 따라 목표와 입장을 쉽게 바꾼다. 오랜 생각 끝에 내린 결론이라고 하더라도 상황에 일치하지 않으면 비교적 쉽게 바꾸는데, 이는 유연성이라고 볼 수도 있지만 때에 따라서는 변덕으로 보이기도 한다.
생각이 많아서 최종 결정을 내리기가 어렵지만, 전체를 조합하고 새롭고 독특한 아이디어를 내는 능력이 탁월하다. 관찰을 잘하고, 평가와 질문이 많다. 감정 조절을 잘하고 다방면으로 생각하며 직접적인 입장 표명을 피한다. 동시에 여러 가지 목표를 세우지만, 그에 비해 목표 달성 능력은 부족하다는 단점이 있다.
적합한 직업 부류
_ 기술 분석 및 컨설턴트, 전문 평론가
_ 기획자, 공무원, 비서 및 조력자 역할
_ 중개인(무역·사무), 외교관, 전문 가이드
_ 독립 창업 경영인
_ 협회 및 단체활동
OGRE는 Object-Oriented Graphics Rendering Engine의 약자로써, 이미 아시는 분들은 저보다 훨씬 잘아시리라 믿습니다. 3D를 주 테마로 잡고 있는 개인이 운영하는 사이트를 보면 OGRE를 강한 열정을 가지고 분석하고 있는 분들이 많더군요. 하지만 저는 단지 수개월전에 OGRE를 공개소스로써 3D 그래픽 엔진 중 인기순위 1위를 차지하는 라이브러리 정도로만 알고 있었고, 그 당시 한번 컴파일이나 해보자는 마음으로 소스코드를 다운로드 받아 컴파일을 시도했지만, 실패하고 말았었습니다. 왜 실패했는지 그 이유는 모르겠습니다. 아마도 제 마음속에 별.. 그다지 OGRE에 대한 관심이 별로 없었지 않았나 싶습니다. 하지만 다행이 이미 컴파일된 데모들을 실행해 볼 수는 있었고, 단지 “좋군..”이 전부였습니다.
하지만 최근 우연이 Direct3D를 전문으로 다루는 어느 개인 블로그에 방문했데, 그 곳에 OGRE를 다루더군요. 또 다시 호기심이 발동한 저는 다시한번 컴파일이나 해볼 요량으로 OGRE의 공식 사이트인 www.ogre3d.org에 방문해 차근 차근 시도를 해보았습니다. 그런데 이번엔 왠일인지 쉽게 컴파일이 되더군요. 이상하게도 컴파일이 되니 제 마음속에서 이 놈을 깊이 있게 분석해보리라는 강한 욕심이 생겼습니다. 정말입니다. 컴파일 성공이라는 첫걸음이 성공하는 순간, 저도 전혀 예상하지 못했던 흥분과 욕심이 생기는겁니다!
제가 OGRE에서 얻고자 하는 바는 다음과 같습니다.
많은 3D 그래픽 개발자로부터 찬사를 받고 있는 OGRE를 직접 사용해보고…
최고 수준의 Object-Oriented를 지향한다는 Ogre의 개발자의 이 엔진으로부터 설계방법을 배우며…
OpenGL이나 DirectX보다 상위 수준의 API 통해 최신 그래픽 기술을 직접 코딩해 느껴보고, 점차 하위 수준으로 접근해 나간다.
위의 3가지 목적중에 2번째인 설계방법이 가장 큰 목표입니다. OGRE의 첫자인 “O”가 Object-Oriented인 만큼, 또한 OS 독립적이며 OpenGL과 Direct3D를 실행중에 유연하게 선택할 수 있는 설계방식이 무척 궁금합니다. 물론 제 나름대로의 이러저러하게 하면 되지 않을까 하는 다소 어설픈 아이디어는 있지만, 다른 개발자의 아이디어는 어떨까, 배우고 싶습니다.
위는 Ogre의 핵심 클래스의 관계도입니다. 간단해 보이기는 하지만 다른 부수적인 것들이 붙으면 매우 복잡하겠지요. Ogre를 분석하는 방법은 Ogre 사이트에서 제공하는 Tutorial과 Demo 소스를 분석하는 방식으로 하려 합니다. 제 스스로에게 건투를 빕니다.
얼마전에 했던 작업이 공간연산이였는데, 쉽게 알고만 있었고 쉽게 사용해 왔던 공간연산이 직접 하나 하나 정확하게 구분하려고 보니, 상당이 헤깔린다는 것을 알게 되었다. 또한 공간연산하면 단지 교차하는지, 포함하는지와 같은 공간관계 연산만이 아니라 공간분석 연산도 포함되다는 사실을 알게 되어 정리하는 차원에서 글을 남긴다. 또한 작업했던 것에 대한 Test 실행파일을 올리니 여러분도 한번 실행해 시험해 보길 바란다. 참고로 공간분석 연산의 경우 결과가 Multi-Polygon인 경우 자랑스런 Memory 충돌에러가 발생한다는 점에 주의하기 바란다.
Geometry의 Spatial Relations
GIS에서 Geometry는 단순하게 Point, Polyline, Polygon으로 구분되며, 몇가지 제약사항을 갖게 되는데 이러한 Geometry를 Simple Feature라고 한다. 이러한 Simple Feature 둘 이상이 공간상에서 관계를 갖게 되는데, Spatial Relation이라고 한다. Spatial Relation의 종류는 모두 8가지 이다.
Equals – 두개의 Geometry가 동일한가?
Disjoint – 두개의 Geometry가 서로 격리되었는가?
Intersects – 두개의 Geometry가 교차하는가?
Touches – 두개의 Geometry가 접촉하는가?
Crosses – 두개의 Geometry가 횡단하는가?
Within – 하나의 Geometry가 다른 하나에 포함되는가?
Contains – 하나의 Geometry가 다른 하나를 포함하는가?
Overlaps – – 두개의 Geometry가 부분적으로 겹치는가?
8가지의 관계들 중에는 서로 비슷한 연산이 있지만, 분명한 차이점을 가지고 있다. 예들 들어 두개의 폴리곤이 touch 관계을 갖는다면, intersect 관계도 항상 갖는다. 하지만 반대로 intersect 관계을 갖는다고 해서 touch 관계을 갖지는 않는다. 다른 예로 overlap과 intersect 연산의 경우, overlap이 참인 경우 항상 intersect도 참이지만, 반대로 intersect이 참이라고 해서 항상 overlap이 참이지는 않다. 하나의 폴리곤이 다른 하나의 폴리곤안에 완전이 포함되는 경우 intersect이 참이지만 overlap은 참이 아니기 때문이며, 이러한 경우는 contain이 참이거나 within이 참이기 때문이다. 여기서 contain과 within은 능동이냐, 수동이냐의 의미를 갖는다.
일단은 폴리곤에 대한 예를 들었지만 서로 다른 형태의 폴리곤과 폴리라인과의 관계를 생각하면 8가지의 관계의 필요성과 이해가 더욱 피부에 와닿을 것이다. 즉, crosses의 경우에는 폴리곤과 폴리라인의 경우에만 연산의 의미가 있다.
Geometry의 Spatial Analysis
GIS에서 Geometry의 Spatial Analysis는 모두 6가지이며 다음과 같다.
Buffer – 일정한 값만큼 Geometry를 키우거나 축소시킨 폴리곤을 얻는다.
Convex Hull – Geometry를 감싸는 최소넓이의 볼록한 폴리곤을 얻는다.
Intersection – 두개의 Geometry가 교차하는 부분에 대한 Geometry를 얻는다.
Union – 두개의 Geometry의 합쳐쳐 만들어진 하나의 Geometry를 얻는다.
Difference – 하나의 Geometry에서 다른 하나의 Geometry의 부분을 빼고 남은 Geometry를 얻는다.
Symmetric Difference – Union으로 구한 Geometry와 Intersection으로 구한 Geometry의 Difference이다.
위의 화면은 Test의 실행 화면인데, Union 연산, 20 Pixel 확장 Buffering 연산, Difference 연산에 대한 결과이다.