피타고라스 정리 — 두 관절 사이 뼈 길이 재기

피타고라스 정리 — 두 관절 사이 뼈 길이 재기
팔꿈치가 여기 있고, 손목이 저기 있어요. 그 사이 뼈는 몇 센티일까요?
자를 대고 재면 되죠. 그런데 컴퓨터 안에서는 자를 댈 수가 없어요. 컴퓨터는 뼈를 못 보거든요. 컴퓨터가 아는 건 딱 두 가지, 팔꿈치의 위치와 손목의 위치뿐이에요.
그럼 어떻게 재냐고요? 여기서 아주 오래된 규칙 하나가 등장합니다. 이름이 좀 어려워요. 피타고라스 정리.
먼저, 위치는 숫자 두 개예요
컴퓨터가 점의 위치를 기억하는 방법은 아주 단순해요. 숫자 두 개를 적어둡니다.
교실 자리를 떠올려 보세요. "앞에서 셋째 줄, 왼쪽에서 둘째 자리." 이렇게 말하면 누구나 그 자리를 찾을 수 있죠. 숫자 두 개면 충분해요.
컴퓨터도 똑같아요. 팔꿈치는 (2, 1), 손목은 (6, 4). 이런 식으로 적어둡니다. 앞 숫자는 가로로 얼마나 갔는지, 뒤 숫자는 세로로 얼마나 올라갔는지예요.
비스듬한 길이는 왜 어려울까
가로로만 간 거리는 쉬워요. 2에서 6까지니까 4칸.
세로로만 간 거리도 쉬워요. 1에서 4까지니까 3칸.
그런데 뼈는 가로로도 안 가고 세로로도 안 가요. 비스듬하게 가죠. 그 비스듬한 길이가 우리가 알고 싶은 진짜 뼈 길이예요.
이 비스듬한 길이는 그냥 4 더하기 3, 7이 아니에요. 계단으로 빙 돌아가면 7칸이지만, 대각선으로 질러가면 그보다 짧거든요. 지름길이 더 짧은 건 당연하잖아요.
그럼 얼마나 짧을까요? 이걸 정확히 알려주는 게 피타고라스 정리입니다.
규칙은 이렇게 생겼어요
가로로 간 칸 수를 제 자신과 곱해요. 세로로 간 칸 수도 제 자신과 곱해요. 그 둘을 더해요. 마지막으로 그 답을 거꾸로 풀어요.
우리 예시로 해볼까요.
- 가로 4칸 → 4 곱하기 4 = 16
- 세로 3칸 → 3 곱하기 3 = 9
- 더하면 → 16 + 9 = 25
- 거꾸로 풀면 → 5 곱하기 5가 25니까, 답은 5
뼈 길이는 5칸이에요. 계단으로 가면 7칸인데, 대각선으로는 5칸. 훨씬 짧죠.
"제 자신과 곱한다"는 말이 낯설 수 있어요. 이건 사실 정사각형 넓이를 구하는 거예요. 한 변이 4인 정사각형의 넓이는 16이잖아요. 그래서 이 규칙을 그림으로 그리면 정사각형 세 개가 나옵니다.
정사각형 세 개 이야기
직각삼각형의 세 변마다 정사각형을 하나씩 붙여봐요.
짧은 변 두 개에 붙은 정사각형의 넓이를 합치면, 신기하게도 제일 긴 변에 붙은 정사각형 넓이와 똑같아요. 16 더하기 9는 25. 딱 맞습니다.
이게 피타고라스 정리의 진짜 모습이에요. 길이 이야기 같지만 사실은 넓이 이야기죠.

왜 그런지 눈으로 보기
"진짜 항상 맞아?" 궁금하죠. 종이 한 장으로 확인할 수 있어요.
큰 정사각형 안에 똑같은 직각삼각형 네 개를 넣어봅니다. 삼각형을 이리저리 옮겨도 삼각형이 차지하는 넓이는 그대로예요. 그러니까 남는 빈 공간의 넓이도 그대로죠.
그런데 삼각형을 한 번 배치하면 빈 공간이 정사각형 두 개(16과 9)로 보이고, 다르게 배치하면 큰 정사각형 하나(25)로 보여요. 같은 넓이가 모양만 바뀐 거예요.
그래서 16 더하기 9는 25일 수밖에 없습니다. 우연이 아니에요.

이걸 알면 좋아지는 점
이 규칙 하나를 알면 손에 들어오는 게 꽤 많아요.
자 없이도 잰다. 두 점의 위치만 알면 그 사이 거리가 나와요. 화면 속 캐릭터의 뼈, 지도 위 두 건물 사이, 게임 속 두 캐릭터 사이 거리까지 전부 같은 방법입니다.
움직임이 이상한 걸 알아챈다. 뼈 길이는 원래 변하지 않아요. 팔을 굽혔다 폈다 해도 팔꿈치와 손목 사이 거리는 똑같아야 하죠. 그런데 계산해 봤더니 어떤 순간에는 5고 어떤 순간에는 8이라면? 그 동작 데이터에 문제가 있는 거예요. 눈으로는 못 잡는 오류를 숫자가 잡아줍니다.
다른 것도 함께 열린다. 원의 성질, 좌표 위의 거리, 3차원 공간에서의 거리까지 전부 이 규칙에서 뻗어 나가요. 하나 알면 여러 개가 따라옵니다.
모르면 겪는 문제
반대로, 이걸 모르면 답답한 순간이 옵니다.
비스듬한 걸 만나면 멈춘다. 가로 거리, 세로 거리는 뺄셈으로 구하지만 대각선은 방법이 없어요. 그런데 세상 대부분의 선은 비스듬해요. 팔도, 다리도, 걸어가는 길도요.
7이라고 잘못 답한다. 4 더하기 3은 7이니까요. 계단으로 돌아간 거리를 지름길 거리라고 착각하는 거죠. 실제 답 5보다 40퍼센트나 큰 값이에요. 이런 오차가 쌓이면 캐릭터 팔이 고무줄처럼 늘어나 보입니다.
왜 틀렸는지 모른다. 화면 속 동작이 어색한데 원인을 못 찾아요. 뼈 길이를 계산해 보면 몇 번째 프레임에서 값이 튀는지 바로 보이는데, 그 계산법을 모르면 그냥 눈으로 계속 돌려보는 수밖에 없거든요.
기억할 순서
복잡해 보이지만 순서는 딱 네 단계예요.
- 가로로 얼마나 갔는지 센다
- 세로로 얼마나 갔는지 센다
- 각각 제 자신과 곱해서 더한다
- 거꾸로 풀어서 답을 꺼낸다
연습 하나 해볼까요. 어깨가 (0, 0)이고 팔꿈치가 (12, 5)라면요? 가로 12, 세로 5. 144 더하기 25는 169. 13 곱하기 13이 169니까 답은 13이에요.
4000년 전에도 알았어요
이 규칙, 피타고라스라는 사람 이름이 붙어 있지만 그 사람이 처음 발견한 건 아니에요.
바빌로니아 사람들이 진흙판에 새겨둔 숫자표가 남아 있는데, 거기에 이미 3-4-5 같은 숫자 짝들이 적혀 있습니다. 피타고라스보다 1000년 넘게 앞선 기록이에요.
중국의 옛 수학책에도 같은 규칙이 그림과 함께 실려 있어요. 서로 멀리 떨어진 곳에서, 서로 모른 채로 같은 걸 발견한 거죠.
왜 그랬을까요? 땅을 나누고, 건물을 세우고, 직각을 정확히 잡으려면 이 규칙이 꼭 필요했거든요. 필요한 사람은 어디서든 찾아내게 되어 있나 봐요.

정리
두 관절 사이 뼈 길이를 재는 방법은 결국 이거예요.
가로로 간 거리와 세로로 간 거리를 각각 제 자신과 곱해서 더하고, 거꾸로 푼다. 그러면 비스듬한 진짜 거리가 나온다.
4000년 전 진흙판에 새겨진 규칙이, 오늘 화면 속 캐릭터의 팔을 재는 데 그대로 쓰이고 있어요. 좋은 규칙은 오래갑니다.
출처
리깅 파이프라인 자동화 도구
반복 작업은 스크립트에게. 현업에서 쓰는 리깅 툴 모음.
리깅 도구 보기