코사인 법칙으로 팔꿈치 각도 알아내기

코사인 법칙으로 팔꿈치 각도 알아내기
로봇 팔이 컵을 잡으려면 어깨와 팔꿈치를 딱 맞게 굽혀야 해요. 그런데 손끝이 어디에 있어야 하는지만 알 때, 팔꿈치를 얼마나 굽혀야 할까요? 바로 코사인 법칙이 이 답을 알려준답니다.
먼저, 삼각형 이야기부터
삼각형에는 변 3개와 각 3개가 있어요. 재미있는 규칙이 하나 있어요. 변의 길이 3개를 모두 알면, 각의 크기도 전부 알 수 있어요. 자를 세 번 대보면 각도기가 없어도 각도를 계산할 수 있다는 뜻이에요.
아래 그림에서 변 a, b, c는 각각 그 반대편에 있는 각과 짝을 이뤄요. 변 a의 맞은편에는 각 α(알파)가 있죠.
코사인 법칙은 무슨 마법일까?
여러분은 직각삼각형에서 쓰는 피타고라스 정리를 들어봤을지도 몰라요. "직각을 낀 두 변을 각각 제곱해서 더하면, 빗변의 제곱이 된다"는 규칙이에요.
그런데 삼각형이 직각이 아니면 어떡하죠? 그때를 위한 더 똑똑한 형이 바로 코사인 법칙이에요. 이렇게 생겼어요.
c² = a² + b² − 2·a·b·cos(C)
어렵게 보이지만 뜻은 간단해요. "빗변의 제곱은, 두 변의 제곱을 더한 값에서 보정값을 뺀 것"이라는 말이에요. 그 보정값이 바로 2·a·b·cos(C) 부분이에요.
여기서 cos(C)는 각도가 벌어진 정도를 숫자로 바꿔주는 마법 단추라고 생각하면 돼요. 각이 딱 90도(직각)이면 cos 값이 0이 되어서 보정값이 사라져요. 그러면 피타고라스 정리랑 똑같아진답니다!
이제 팔을 만들어 봐요
로봇 팔은 막대 두 개로 되어 있어요.
- 위팔: 어깨에서 팔꿈치까지 (길이 a)
- 아래팔: 팔꿈치에서 손끝까지 (길이 b)
그리고 어깨에서 손끝까지의 직선 거리를 c라고 불러요. 이 세 변이 삼각형을 만들어요! 팔꿈치는 바로 변 a와 변 b가 만나는 꼭짓점이에요.
우리는 위팔 길이 a와 아래팔 길이 b를 이미 알아요. 로봇 몸의 부품이니까요! 그리고 손끝을 어디에 둘지 정하면, 어깨에서 그곳까지의 거리 c도 계산할 수 있어요.
팔꿈치 각도를 꺼내기
이제 우리가 모르는 건 딱 하나, 팔꿈치 각도예요. 코사인 법칙을 조금 뒤집어서 각도를 꺼내볼게요.
cos(팔꿈치) = (a² + b² − c²) ÷ (2·a·b)
변의 길이 세 개만 넣으면 오른쪽이 하나의 숫자로 딱 나와요. 그 숫자를 다시 각도로 바꿔주는 단추(계산기의 cos⁻¹ 버튼)를 누르면, 팔꿈치를 몇 도로 굽혀야 하는지 답이 나와요!

손끝이 가까우면? 멀면?
느낌으로 확인해 볼까요?
- 손끝이 어깨에서 멀리 있으면 (c가 큼) → 팔을 쭉 펴야 하니까 팔꿈치 각도가 커져요 (거의 곧게).
- 손끝이 어깨에 가까이 있으면 (c가 작음) → 팔을 접어야 하니까 팔꿈치 각도가 작아져요 (많이 굽힘).
공식이 딱 이 느낌대로 움직여요. c가 커지면 c²를 빼는 양이 커져서 cos 값이 작아지고, 그러면 각도가 커진답니다. 신기하죠?
조심할 점 하나
손끝이 팔이 닿을 수 있는 곳보다 더 멀리 있으면 어떻게 될까요? 예를 들어 위팔과 아래팔을 다 더한 길이보다 c가 더 길면, 아무리 팔을 펴도 손이 그곳에 못 닿아요. 이럴 때는 삼각형 자체가 만들어지지 않아서 답이 없어요. 로봇에게 "그건 불가능해!"라고 알려주는 셈이죠.
정리해요
오늘 배운 걸 짧게 모아볼게요.
- 코사인 법칙은 변 3개를 알면 각을 알려주는 규칙이에요.
- 로봇 팔은 위팔 + 아래팔로 삼각형을 만들어요.
- 어깨에서 손끝까지 거리 c만 구하면, 팔꿈치 각도를 계산할 수 있어요.
- 이게 바로 게임 캐릭터와 로봇이 자연스럽게 팔을 움직이는 비밀, 2본 IK랍니다.
다음에 게임 속 캐릭터가 물건을 척 집어드는 걸 보면, 그 뒤에 숨은 작은 삼각형과 코사인 법칙을 떠올려 보세요!
출처
리깅 파이프라인 자동화 도구
반복 작업은 스크립트에게. 현업에서 쓰는 리깅 툴 모음.
리깅 도구 보기