소프트웨어 개발, 특히 게임 엔진과 같은 그래픽 관련 분야에서 각도를 다룰 때 흔히 사용되는 라디안(radian) 방식이 비효율적이며, '턴(turn)'이라는 새로운 단위를 사용하면 코드의 단순성, 속도, 정밀도를 크게 향상시킬 수 있다는 주장이 나왔습니다. 이는 기존에 파이(pi) 대신 타우(tau, 2*pi)를 사용하자는 움직임보다 훨씬 더 큰 영향을 미칠 수 있는 변화로 평가됩니다.
현재 많은 개발자가 0에서 1 사이의 주기를 갖는 값을 삼각 함수(sin, cos)에 전달하기 위해 타우(tau)를 곱하여 라디안으로 변환합니다. 그러나 삼각 함수 라이브러리 내부에서는 이 라디안 값을 다시 파이(pi)로 나누는 연산을 수행하는 경우가 많습니다. 예를 들어, 흔히 사용되는 AVX2 삼각 함수 구현은 입력값을 4/pi 상수로 곱하는데, 이는 결국 호출 코드에서 곱한 파이 값을 다시 나누는 것과 같습니다. 즉, 불필요한 곱셈과 나눗셈이 반복되어 연산 비용이 발생하고, 부동 소수점 연산의 특성상 정밀도 손실의 가능성도 있습니다. 90도와 같은 일반적인 각도도 라디안으로는 정확히 표현하기 어렵지만, 턴 단위에서는 0.25와 같이 정확하고 간결하게 표현할 수 있습니다.
이러한 비효율을 해결하기 위해 원 전체를 0에서 1 사이의 값으로 표현하는 '턴' 단위를 사용하는 것이 제안됩니다. 0턴은 0도, 0.5턴은 180도, 1턴은 360도에 해당하며, 이는 수학적으로도 유효한 개념입니다. 개발자가 삼각 함수 라이브러리를 직접 구현하거나 수정할 수 있다면, 기존 라디안 기반 함수 대신 턴 기반 함수를 사용하도록 변경함으로써 불필요한 연산을 제거하고 코드의 효율성을 높일 수 있습니다. 이는 단순히 상수를 조정하는 몇 줄의 코드 변경만으로 가능하며, 레거시 코드 지원을 위해 기존 라디안 함수를 턴 기반 함수로 연결(thunk)하는 방식도 고려할 수 있습니다. 이 변화는 특히 고성능이 요구되는 게임 엔진이나 시뮬레이션 분야에서 중요한 최적화 기회가 될 수 있습니다.
