초등학교 3학년때인데,
컴퓨터를 손에 넣고 일주일이 되지 않았을 때의 이야기.
게임을 만들려고 비행기를 그렸음.
APPLE BASIC 의 HLINE VLINE 을 이용해 막대기 세 개를 그었지.
검은 배경위의 선비 사짜 모양의 비행기.
#
#
#####
#
###
얘를 움직여야 되는데 어떻게 움직일지 몰랐음.
( 말 그대로 I'm stuck )
그래서 고민하던 중에
COLOR 명령을 이용해 비행기 색을 바꿔서 그렸지.
FOR 문으로 색을 돌아가며 그리던 중에
검은색( 배경색 ) 으로 그렸더니 비행기가 사라졌어.
그리고 다음색으로 그려질때 비행기가 나타났어.
오!
유레카!
같은 위치로 이동했다!
라고 느낀거지. ( 생각한게 아니라 느낀것 )
그래서 비행기를 배경색과 다르게 찍고, 배경색으로 지우고 옆에다 다시 찍었지.
이동완성!
그때 깨달음. 이동 = 삭제 + 생성.
다음날 한 칸씩 이동할때 깜박임을 최소화하기 위해
세로 길이 만큼의 블럭만 다시 그리면 된다는걸 깨달았고,
도형의 세로방향 외곽선 만큼의 비용으로 일반화 된다는걸 깨달았지,
새롭게 그리는 비용도 마찬가지.
이동속도를 높이기 위해 건너 띄자면 그 거리만큼 늘어나고,
최대 크기는 원래의 형태 만큼의 지우는 비용이지.
즉, 이동을 추가분 만큼의 새로그림, 삭제분 만큼의 제거인
이동 = 일부생성 + 일부삭제
로 구현하는 것이 더 경제적이란걸 깨닫지만,
일부를 구현하기 위해 간단한 기하학적 해석이 필요하다는것 또한 깨달았지.
그 일부 라는 단어가 컨텍스트를 기억하고 있어야한다는 문제임도 알게 되고 말야.
이게 여기서 끝나는 문제가 아닌게,
파일의 처리나, 이미지의 kernel convolution에도 등장하더라.
결국은 기본논리임.
=======================
이동 = 일부생성 + 일부삭제
이부분은 그냥 상하좌우로 움직일때 픽셀찍는걸 if로 따로 처리한다는 말인가?
기하학을 모르는 사람은 대체 이 글을 어떻게 이해해야 함?
ㅋㅋ 문과인 나는 알 방도가 없다
댓글 0