원호를 그리는 것에 대해 이전글로 잠시 생각을 했었습니다만, 결론은 쓸게 못되더군요.
제대로 그리는 것을 하기엔 역부족 이었습니다.
그래서 다음 코드를 생각해 냈습니다.


다만 위 코드는 중심점으로 부터 단순 원을 기반으로 한 처리만을 할 수 있었기 떄문에 좀 더 복잡한 코드를 생각 해 내야 했습니다.
결국 머리를 굴려야  했고 다음 정도의 코드를 완성할 수 있었습니다.



여기서 사용된 SIN_10 과 COS_10 은 각각 1도씩 계산된 sin 값과 cos 값을 10bit 씩 밀어서 만든 것 으로 다음과 같이 정의 하였습니다.


이 알고리즘을 사용하면 원호는 지정된 영역내에 만들어 지게 되며, 0 도의 위치는 윈도우 좌표상 오른쪽 중앙이 됩니다.
실제 각도를 계산 할 시 0 도를 가운데 위로 정의 하고 싶다면 startAngle 에서 -90 을 계산 한 값을 넣어야 합니다.
또한 그려지는 방향은 역시계 방향으로 그려지게 되므로 쓰기 전에 좀 더 처리를 해 주어야 하는 코드 입니다.

좀 더 나은 알고리즘을 생각해 보게 된다면 개선 한 코드를 올려 보도록 하겠습니다.
Posted by 견족자K rageworx