brunch

You can make anything
by writing

C.S.Lewis

by freetime Jan 02. 2021

코딩으로 반지 만들기 알고리즘

야 너두 할 수 있어

강아지 산책을 마치고 왔습니다. 오래간만에 바깥세상으로 나갔습니다. 많이 춥습니다. 집값도 오르고 물가도 오르고 온도는 내려가고, 월급은 안 오르고 야속합니다. 아쉬운 마음을 뒤로하고 코딩으로 반지 만드는 방법을 알려 드리겠습니다. 어린 시절의 추억을 소환하겠습니다. 수학 시간으로 돌아갑니다. 상상을 하라고 하고, 캐드로 모델링도 해보라고 하고, 스케치도 해보라고 했다가 이제는 수학까지 해야 됩니다. 학교에서 수학을 배울 때 저걸 도대체 어디다 쓰라고 가르쳐 주는지 몰랐습니다. 제가 반지 만드는데 쓸 줄 그때 알았다면 공부를 좀 더 열심히 할걸 그랬습니다.


기차는 길다, 길면 바나나, 반지는 둥글다, 둥글면 원이다, 원이면 원의 방정식이 필요합니다. X의 제곱과 Y의 제곱의 합이, 상수의 제곱 값과 같으면 원의 방정식입니다. 여기서 상수는 원의 반지름입니다. 아래 그림 점선 원으로 표시된 부분을 참고해보면 X축의 값을 정하고 Y축의 값이 반지름 R과 피타고라스의 정의를 만족하는 Y 값을 찾으면 됩니다. 그 값 중에서 붉은색 삼각형의 빗변이 X축과 이루는 각도(ɵ)를 일정하게 증가시키면서 육면체를 배치시켜 봅니다. 아래 그림 오른쪽과 같이 원을 따라 육면체가 배치됩니다. 원의 방정식으로 육면체를 배치했습니다. 어디에 쓸지 몰랐던 원의 방정식을 이용해서 뭔가 만들었습니다.




육면체 배치가 마음에 안 듭니다. 원을 이루는 직선을 따라서 회전을 해 보겠습니다. 아래 그림을 참조해 보면 육면체가 10개인 다각형입니다. 360도에서 10을 나누면 36도입니다. 육면체를 배치할 때마다 배치되는 순서 개수보다 한 개 작은 수와 36도를 곱해서 회전하면 됩니다. 단 첫 번째 육면체는 0 곱하기 36도이니까 회전하지 않고 그대로 있습니다. 두 번째 육면체는 36도 곱하기 1만큼 회전합니다. 세 번째 육면체는 36도 곱하기 2도만큼 회전합니다. 10개의 육면체를 배치할 동안 이 같은 방식으로 각도를 계산해서 육면체를 회전합니다.  8 각형의 반지를 만들고 싶으면 360도 나누기 8 해서 45도를 기준 각으로 이용하면 됩니다. 구상했던 반지에 좀 더 가까워졌습니다. 원의 공식으로 육면체를 배치하고 다각형의 개수를 이용해서 회전했습니다.



육면체 사이에 틈이 있습니다. 길이를 조정해서 육면체가 서로 붙게 만들어야 합니다. 아래 왼쪽 그림을 보면 육면체가 L 만큼 길어지면 됩니다. L은점선 원에서 보는 바와 같이 반지름의 길이와 L의 길이의 반인 X와 반지름의 길이 R이 이루는 삼각형의 각도(ɵ)를 이용한 삼각함수를 이용해서 r의 길이를 구한 다음,  피타고라스의 공식을 이용해서 L의 길이를 구할 수 있습니다. 각도는아래 그림을 보시면 알시겠지만, 위에서 구한 각도의 반값입니다. 아래 오른쪽 그림은 위에서 배치한 육면체의 길이를 L 만큼 늘인 모습니다. 축하드립니다. 반지 제작의 99%를 완성하셨습니다.    





브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari