You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
원 둘레에 눈금 60개를 6도 간격으로 배치하는 단계이다. 처음에는 appendRect로 눈금 하나를 만든 뒤 rotate()를 적용하면 될 것이라고 생각했지만 실제로는 눈금이 예상한 위치를 벗어나 화면 밖으로 이동했다.
The rotational axis passes through the point on the object with zero coordinates.
rotate()는 항상 원점 (0,0)을 기준으로 회전해서 생기는 문제였다. 그래서 눈금 좌표 자체를 원점 주위에 정의하면 원점 회전이 곧 제자리 회전이 되고, 마지막에 translate(CX, CY)로 전체를 시계 중심으로 옮기면 된다.
tick->appendRect(
-half,
-(R - 30.0f),
half * 2.0f,
len,
half,
half
);
tick->rotate(i * 6.0f); // 원점을 기준으로 회전
tick->translate(CX, CY); // 회전 중심을 시계 중심으로 이동
3단계 침 그리기
시계침은 약간 뾰족한 느낌이 있어야 할 것 같아서 폴리곤으로 그렸다.
항상 느끼듯 좌표나 이런 것들을 쓰는 것이 가장 어려운 것 같다. 클로드의 도움을 많이 받았다.
reacted with thumbs up emoji reacted with thumbs down emoji reacted with laugh emoji reacted with hooray emoji reacted with confused emoji reacted with heart emoji reacted with rocket emoji reacted with eyes emoji
Uh oh!
There was an error while loading. Please reload this page.
무엇을 만들까 고민을 하다가 아날로그 시계를 만들어보기로 결정했다.
시계를 만들기 위해
이러한 순서로 구현을 했다.
1단계 - 시계판 만들기
시계 테두리가 되어줄 원 하나와 그 안의 실제 시간을 보여주는 원 하나 이렇게 원이 총 2개가 필요하다
테두리 원에는 그라디언트를 주어서 약간 밝음과 어두움이 반복되어 금속 느낌이 나도록 하였다.
2단계 - 눈금 만들기
원 둘레에 눈금 60개를 6도 간격으로 배치하는 단계이다. 처음에는
appendRect로 눈금 하나를 만든 뒤rotate()를 적용하면 될 것이라고 생각했지만 실제로는 눈금이 예상한 위치를 벗어나 화면 밖으로 이동했다.rotate()는 항상 원점(0,0)을 기준으로 회전해서 생기는 문제였다. 그래서 눈금 좌표 자체를 원점 주위에 정의하면 원점 회전이 곧 제자리 회전이 되고, 마지막에translate(CX, CY)로 전체를 시계 중심으로 옮기면 된다.3단계 침 그리기
시계침은 약간 뾰족한 느낌이 있어야 할 것 같아서 폴리곤으로 그렸다.
항상 느끼듯 좌표나 이런 것들을 쓰는 것이 가장 어려운 것 같다. 클로드의 도움을 많이 받았다.
4단계 - 침 움직이게 하기
update(canvas, elapsed)는 매 프레임 호출된다.elapsed에는 프로그램이 시작된 뒤 흐른 시간이 밀리초 단위로 들어온다.origin은 프로그램 시작 시점의 자정 이후 경과 초이고,elapsed * 0.001f는 프로그램 실행 후 흐른 시간을 초로 변환한 값이다.now에서 시침, 분침, 초침에 필요한 값을 각각 계산했다.초침과 분침은 한 바퀴가 60칸이므로 한 칸당 6도씩 움직인다. 시침은 한 바퀴가 12칸이므로 한 시간당 30도씩 움직인다.
시간 값을 정수로 자르지 않았기 때문에 초침은 매 프레임 조금씩 움직인다.
여기에
floorf()를 적용하면 소수점이 제거되어 초침이 1초마다 6도씩 움직인다.전체 코드
과제링크
https://github.com/mungjin01/thorvg.example/tree/example/analog-clock
All reactions