좋은 질문입니다. 방위각(方位角, heading / azimuth) 은 “지금 휴대폰이 어느 방향을 바라보고 있는지”를 각도(°) 로 표현한 값입니다.
방위각이 뭔가요?
- 기준: 북(N) = 0°(또는 360°)
- 시계방향으로 증가:
- 동(E) = 90°
- 남(S) = 180°
- 서(W) = 270°
예를 들어,
- 방위각 306° = 북(0°)에서 시계방향으로 306° 만큼 돌아간 방향
→ 보통 북서 쪽(서쪽보다 북쪽에 더 가까운 방향) 입니다. - 방위각 311° 라면, 그것도 북서 방향대에 있고 306°보다 약간 더 “북에 가까운 북서”입니다.
“풍향”과 “방위각”은 다릅니다
헷갈리기 쉬워서 구분만 딱 잡아드리면:
- 방위각(나침판):
“내 폰(또는 내가)이 바라보는 방향이 어디냐”
→ 사용자가 돌리면 값이 계속 바뀝니다. - 풍향(기상 값):
“바람이 불어오는 방향이 어디냐”
→ 외부 날씨 데이터(관측값)라서, 사용자가 폰을 돌린다고 바뀌지 않습니다.
우리 앱에서 왜 바늘이 2개가 필요했나
- 빨간 바늘(북쪽 바늘): 항상 북쪽을 표시(센서 기준 ‘자기 북’)
- 추가 바늘(두꺼운 바늘): 현재 방위각(예: 306°) 위치를 가리켜서
“내가 지금 바라보는 방향이 정확히 어디인지”를 직관적으로 보여줍니다.
원하시면, 306°를 더 직관적으로 “북서(306°)”처럼 크게 보여주거나, 360도 눈금을 더 촘촘히(예: 10° 단위) 표시하도록도 개선할 수 있습니다.
방위각 때문에 고생 했다.. 이게 없는 줄도 모르고.. -_-;; 엄헌 코드만 고쳤다

이렇게 빨간 바늘을 북쪽으로 놓고 봐야 한다 안그래도 되긴 하는대 그럼 알아서 계산 해서 어떤 위치인지 알려준다

맞습니다! 드디어 정답을 찾으셨네요. 마지막으로 올리신 두 사진(방위 359° 북)을 비교해 보면, 이제 사용자님의 앱과 검은색 앱이 완벽하게 일치하는 것을 확인할 수 있습니다.
지금 상태가 **"나침반의 정석"**입니다. 혼란을 드렸던 바늘의 위치를 한 번 더 깔끔하게 정리해 드릴게요.
1. 바늘이 왜 이제야 제대로 보일까요?
* 사용자님 앱 (359° 북): 휴대폰 머리가 북쪽을 향하고 있으니, 빨간 바늘이 N(0도) 방향을 가리키고 있습니다.
* 검은색 앱 (2° 북): 역시 북쪽을 향하고 있으니 숫자판의 '북' 글자가 12시 방향에 와 있습니다.
* 결론: 이제 두 앱 모두 **"당신은 북쪽을 보고 있습니다"**라고 같은 말을 하고 있는 것입니다.
2. 빨간 바늘의 역할: "고정된 북쪽 지지대"
나침반 앱을 만드실 때 꼭 기억해야 할 핵심은 이것입니다.
> "빨간 바늘은 내가 어디로 돌든 상관없이, 항상 지구의 북쪽(N)을 찌르고 있어야 한다."
>
* 휴대폰을 오른쪽으로 돌리면? 바늘은 왼쪽으로 돌아가서 북쪽을 유지해야 합니다.
* 휴대폰을 왼쪽으로 돌리면? 바늘은 오른쪽으로 돌아가서 북쪽을 유지해야 합니다.
* 이것이 바로 나침반의 원리입니다.
3. 왜 처음에 어렵게 느껴졌을까요?
처음엔 **"바늘이 내가 가는 방향을 가리켜야 한다"**는 생각(자동차 화살표 방식)과 **"바늘은 북쪽만 가리킨다"**는 나침반의 방식이 충돌했기 때문입니다. 하지만 지금처럼 **빨간색을 북쪽(N)**에 맞추고 나니, 하단의 숫자(359°)와 바늘의 방향이 논리적으로 딱 맞아떨어지는 것을 보실 수 있습니다.
💡 앱을 더 완벽하게 만드는 마지막 팁
지금 앱 디자인을 보면 배경에 N, E, S, W 글자가 고정되어 있죠?
* 만약 나중에 앱을 업데이트하신다면, 배경의 글자판(원형 판)도 바늘과 함께 돌아가게 코드를 짜보세요.
* 그러면 어떤 방향을 보더라도 **빨간 바늘은 항상 화면 위쪽(12시)**을 향하게 되고, 내가 보는 방향의 글자가 그 아래로 오게 됩니다. (이게 바로 검은색 앱이 사용하는 방식이고, 사용자가 가장 편하게 느끼는 방식입니다.)
고생 많으셨습니다! 이제 센서와 방위의 상관관계를 완벽히 이해하신 것 같아요. 혹시 바늘이 움직일 때 너무 파르르 떨린다면, 부드럽게 움직이게 만드는 '보정 코드(Filter)'에 대해서도 알려드릴까요?