너트가 왜 나와?
반지를 만드는 과정을 알려드리겠습니다. 어렵지 않습니다. 아주 쉽게 설명드리겠습니다. 머릿속에 잡념을 지웁니다. 몰입합니다. "아빠 뭐해"가 들립니다. 다시 집중합니다. 에이 관둬. 안됩니다. 다른 방법을 찾습니다. 주변을 둘러봅니다. 너트가 굴러 다닙니다. 왜 너트가 거실 바닥에 있는지 모르겠습니다. 어디서 빠진 건지 알 수가 없습니다. 너트는 6 각형이며 안쪽이 원의 형태입니다. 모양이 반지 같습니다. 찾았습니다. 너트의 모양을 이용해서 반지를 만들어 보겠습니다.
구상을 한번 해 봅니다. 너트와 같은 반지면, 안쪽은 손가락이 닿는 부분이니 원이 좋겠고, 바깥쪽은 다각형의 형태입니다. 바깥쪽, 안쪽 2개의 부분으로 반지를 나누어서 만들어야겠습니다. 개발 방향이 너무나 쉽게 결정됐습니다.
3차원의 형태로 가상공간에서 모델링을 해 봅니다. 캐드라고 하는 프로그램을 이용합니다. 모델링은 영어로 Modeling이라고 하는데, 모형 제작, 조형, 조각이라는 뜻인데 뭔가 모양을 만든다는 뜻입니다. 쉽게 설명드리면 찰흙으로 컵, 동물 같은 형상을 만드는 거처럼 3차원 공간에서 가상으로 만든다고 생각하시면 됩니다. 캐드는 영어로 CAD, Computer Aided Design의 약자입니다. 컴퓨터가 디자인을 도와준다는 뜻 같습니다. 고맙군요. 무료 캐드를 이용하고 상자, 원통 모양을 조합해서 너트 반지를 만들었습니다. 앞에서 구상한 데로 안쪽은 원으로 바깥쪽은 다각형의 모양을 하고 있습니다. 너트같기고 하고 반지 같기고 하고 애매합니다. 저는 이제, 반지 같이 볼려고 합니다. 실제 이런 반지가 있습니다. 놀랍습니다.
너트 반지를 유심히 살펴봅니다. 반지를 착용할 소비자를 떠올려 봅니다. 반지를 착용할 고객의 손가락 모양은 너무나 다양합니다. 굵거나, 가늘거나, 길거나 짧거나 할 겁니다. 그럼 제가 만들 반지도 그들을 배려해야 합니다. 반지가 트랜스포머같이 변신하게 만들 겁니다. 손가락의 굵기에 맞게 하려면 반지의 내부 지름이 자유롭게 변해야 합니다. 손가락이 길이에 따라 반지의 높이도 달라지는 게 좋겠습니다. 비율은 중요하니까요. 또 뭐가 변경 가능한지 보면, 각도의 개수입니다. 각도의 개수가 많고 적고에 따라 반지의 모양이 변할 수 있습니다. 각도의 개수가 많아지면 원에 가까워지니, 실제 반지 모양도 만들어집니다. 너트 모양에서 시작했는데 반지 모양이 만들어질 수 있습니다. 대박입니다. 코딩을 하기 전에 할 게 있습니다. 밑그림을 그려야 됩니다.
반지 프로그램이 어떻게 동작할지 생각을 해보고 위에서 구상했던 반지를 변신시키는 치수를 사용자가 어떻게 사용할지 스케치를 해봅니다. 아래 그림 왼쪽은 반지 만들 때 초기 단계이고, 오른쪽은 몇 달 지나서 그렸습니다. 계속하다 보니까 스케치 실력도 늘었습니다.
제가 만들 반지 프로그램과 사용자가 소통하기 위한 창구가 필요합니다. GUI, Graphic User Interface라고 하는데, 직역을 하면 시각적인 사용자 접점입니다. GUI를 이용해서 사용자가 반지 프로그램의 치수를 조정할 수 있습니다. 위에 있는 그림처럼 스케치를 통해서 GUI를 설계합니다. 반지 모양 변신을 위한 치수와 그에 따라 반지 모양이 만들어지는 "MAKE" 버튼을 추가했습니다. 반지에 글자도 넣게 하고 캐드 모델링에서 미쳐 발견하지 못했던, 변경 가능한 치수도 추가적으로 설계해 봅니다. 상상력이 필요합니다. 생각의 한계를 뒤로하고, 마음껏 공상의 나래를 펼칩니다. 프로그램을 만들때 저는 기술의 제약을 무시합니다. 기술을 먼저 두고 프로그램을 구상하면 딱 적용 가능한 기술만큼 만들어집니다. 생각데로 안 만들어져도 괜찮습니다. 처음부터 잘할 수 없습니다. 이제 알고리즘을 고민해 보겠습니다.