관리 메뉴

KorSA

정다각형 그릴 때 주의사항 본문

Development Experience/Mathematics

정다각형 그릴 때 주의사항

Praiv. 2020. 2. 14. 11:11
320x100

WPF의 Polygon 클래스를 사용하여 정다각형을 그리는 작업을 하던 중

 

이상하게 정다각형의 모습이 내가 원하던 모습과 미묘하게 다른 현상을 보았다.

 

나는 정다각형을 그리기 위해

 

각도를 0도부터 [ 360 / (정다각형의 면의 수) ] 씩 증가시키는 방식을 사용하였다.

 

예를 들어 정오각형의 경우,

 

"Polygon의 중심점을 지나는 수직선" 과

 

"Polygon의 중심점과 Polygon의 첫 점을 지나는 직선" 간의

 

각도가 0도이다.

 

Polygon의 두번째 점의 경우 각도가 360 / 5 = 72 도 이고

세번째 점의 경우 144도,

네번째 점의 경우 216도,

다섯번째 점의 경우 288도 이다.

 

 

이렇게 각도를 직접 계산할 경우 반드시 주의해야 할 점이 있다. (내가 했던 실수이기도 하다)

바로 데이터 타입을 정확히 맞춰 주어야 한다는 것이다.

 

나는 Polygon을 그릴 때 계산된 각도 값을 decimal 형 변수에 저장하였다.

하지만 외부로부터 데이터를 얻어온 각도 값을 저장할 때에는 int 형 변수에 저장하였다.

 

정삼각형 ~ 정육각형 까지는 각도값이 정수값으로 딱 떨어지지만

정칠각형의 경우 각도값이 소수점으로 변한다.

 

이로 인해 decimal형 변수와 int형 변수 간의 오차가 생기게 되고,

정다각형을 그리면 그릴 수록 오차가 쌓이게 된다.

 

평소 대학생이나 할 법한 실수라고 생각해왔던 나를 돌아보게 되는 시간이었다.

이런 거 하나 하나에 대해 좀 더 민감해지고 감을 기를 수 있도록 노력해야겠다.

 

 

 

728x90
728x90
Comments