고등학교 수학 1에서 나왔던 점화식은 이전 결과가 그다음 결과에 그대로 반영되어 새로운 결과를 도출하는 수학식이다.
An+1 = An + f
대략 이런 형태이다. 상황에 따라 f의 형태와 A의 계수가 달라지지만 근본적으로는 ‘이전 결과가 다음 결과에 반영된다’가 포인트이다.
로직을 만들다 보면 이런 상황이 아주 자주 발생한다. 순환을 하는데 이전 값을 참고해야 하는 상황이라면 대개 그렇다. 어쩐지 이전 값을 참고한다고 하니 메모이제이션이 생각나는데 뭐, 다 같은 뿌리를 가지고 있나 보다. 어차피 과학자들이 수학 전개해서 시뮬레이션하려고 만든 게 코드고 알고리즘이니깐 말이다.
오늘은 주기적인 ease-in-out 애니메이션을 가진 무한 슬라이드를 만들어야 할 일이 있었다. 문제는 리스트 중 현재 사용 언어가 일단 래퍼 엘리먼트의 중앙으로 온 후에 애니메이션이 시작돼야 한다는 점, 그리고 정확히 상대적인 중심에 위치해야 한다는 것이었다. 어쩐지 relative-absolute 스타일이나 flex display로 처리 가능할 것 같이 생겼는데 세부적인 요구사항을 반영하기에는 역시 css만으로는 역부족이라 스크립트로 구현을 시작했다. 그중 한 리스트 아이템을 보여주고 잠시 후 다음으로 넘어가는 주기적인 애니메이션을 구현하다 보니 이전 값을 참조해서 다음 값에 반영하는 상황이 발생해 점화식이 문득 생각난 김에 적어봤다. 고등학교 때 공부한 게 영 쓸모없진 않은 것 같다.
덧, 인생도 점화식이지 않나 하는 생각이 든다. 이전의 선택들이 그대로 내 미래에 반영되고 있으니 말이다. 물론 그 비선형성이 엄청나 수학식으로 예견할 순 없겠지.