Profile

THINK. CREATE. SOLVE.

JasonRecord

[C/C++] 아날로그 시계

analogWatch.exe
0.01MB

아날로그 시계를 본따 만든 프로그램 입니다.

 

테두리 구현부터 설명드리겠습니다

 

원은 무수한 점으로 이루어져 있습니다. 직선도 동일하죠.

그래서 점의 좌표를 알 수 있다면 원도 그릴 수 있겠죠.

점의 좌표를 알기 위해서 삼각함수를 쓰는 것입니다.

 

 

좌표평면을 떠올리신다면 x와 y는 금방 알 수 있습니다.

x는 b와 같고

y는 c와 같습니다.

 

그럼 여기서 삼각함수를 이용해서 b와 c를 알 수 있습니다.

 

삼각함수가 기억이 잘 나지 않으신다면 아래 동영상을 참고하시길 바랍니다.

.

.

.

정리하면, 다음과 같습니다

 

 

 

x는 b와 같고 y는 c와 같으니 이러한 공식이 나왔습니다.

그럼 이제 코드로 구현할 수 있습니다.

1
2
3
4
5
6
7
8
9
int r = 5;
int x, y;
 
for (int i = 0; i < 360; i++)
{
    x = cos(i * DEG2RAD) * r + 5;
    y = sin(i * DEG2RAD) * r + 5;                                                           
    Circle[y][x] = 1;
}
cs

 

배열을 사용해서 좌표에 맞는 배열칸에 테두리를 출력하였습니다.

 

r은 반지름 입니다 위 그림에서 a와 같습니다.

x, y는 윈 위의 점입니다.

0 ~ 359도 까지 점의 좌표를 찾아서 배열에 넣어줍니다.

+5를 해주는 이유는 원점을 5,5로 잡기위함입니다.

 

여기서 주의할 점은 프로그래밍에서 각도를 다룰때 평소에 쓰던 각도가 아닌 라디안을 써야한다는 점입니다.

 

우리가 각도법으로 각도를 입력해도 컴퓨터는 호도법으로 계산합니다. 그래서 호도법에 맞는 각도를 입력해야합니다.

1 degree는 π/180 radian 입니다.

그럼 각도 * π/180을 하면 맞는 라디안이 나오겠죠?

 

출력해보시면 원이 그려지는것을 확인할 수 있습니다.

'프로그래밍 > 알고리즘' 카테고리의 다른 글

[프로그래머스] 크레인 인형뽑기 게임  (0) 2021.09.05