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
content()에서 도형을 한 번만 생성해 캔버스에 등록하고, update()에서 매 프레임 각도만 갱신하는 tvgexam::Example의 애니메이션 패턴을 사용했습니다.
Paint::rotate()는 항상 도형 로컬 좌표의 (0,0)을 축으로 회전한다는 점을 이용해, 시침/분침/초침을 원점에서 위로 뻗은 모양으로 그린 뒤 translate()로 시계 중심 위치로 옮겼습니다. 이렇게 하면 rotate() 호출만으로 시계 중심을 축으로 도는 바늘을 만들 수 있습니다.
추(진자)는 막대와 원(bob) 두 도형을 하나의 Scene으로 묶어, 같은 축을 기준으로 함께 회전하도록 했습니다.
추의 왕복 운동은 20.0f * sinf(t * 2.0f)로 구현했습니다. sin 함수가 -11 사이를 부드럽게 오가는 성질을 이용해 -20도+20도 사이를 계속 왕복시켜, 실제 진자의 조화진동에 가까운 움직임을 만들었습니다.
시침/분침/초침은 실제 시:분:초 비율(60배속 관계)은 유지하되, 데모로 빠르게 보이도록 속도를 임의로 올려서 애니메이션했습니다.
도형 속성을 바꾼 뒤에는 반드시 canvas->update()를 호출해야 변경 사항이 화면에 반영됩니다.
처음에는 회전축을 Picture 전용 API인 origin()으로 잡으려다 컴파일 에러(has no member named 'origin')가 나서, API 문서를 다시 확인해 translate() + 로컬 좌표 방식으로 수정했습니다.
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.
Uh oh!
There was an error while loading. Please reload this page.
`#include "Example.h"
struct MyExample : tvgexam::Example
{
tvg::Shape* hourHand = nullptr;
tvg::Shape* minHand = nullptr;
tvg::Shape* secHand = nullptr;
tvg::Scene* pendulum = nullptr;
};
int main(int argc, char **argv)
{
return tvgexam::main(new MyExample, argc, argv, true, 400, 600);
}`
content()에서 도형을 한 번만 생성해 캔버스에 등록하고, update()에서 매 프레임 각도만 갱신하는 tvgexam::Example의 애니메이션 패턴을 사용했습니다.
Paint::rotate()는 항상 도형 로컬 좌표의 (0,0)을 축으로 회전한다는 점을 이용해, 시침/분침/초침을 원점에서 위로 뻗은 모양으로 그린 뒤 translate()로 시계 중심 위치로 옮겼습니다. 이렇게 하면 rotate() 호출만으로 시계 중심을 축으로 도는 바늘을 만들 수 있습니다.
추(진자)는 막대와 원(bob) 두 도형을 하나의 Scene으로 묶어, 같은 축을 기준으로 함께 회전하도록 했습니다.
추의 왕복 운동은 20.0f * sinf(t * 2.0f)로 구현했습니다. sin 함수가 -1
1 사이를 부드럽게 오가는 성질을 이용해 -20도+20도 사이를 계속 왕복시켜, 실제 진자의 조화진동에 가까운 움직임을 만들었습니다.시침/분침/초침은 실제 시:분:초 비율(60배속 관계)은 유지하되, 데모로 빠르게 보이도록 속도를 임의로 올려서 애니메이션했습니다.
도형 속성을 바꾼 뒤에는 반드시 canvas->update()를 호출해야 변경 사항이 화면에 반영됩니다.
처음에는 회전축을 Picture 전용 API인 origin()으로 잡으려다 컴파일 에러(has no member named 'origin')가 나서, API 문서를 다시 확인해 translate() + 로컬 좌표 방식으로 수정했습니다.
https://github.com/user-attachments/assets/db0fcbec-041c-4c50-957f-63de4afb99df
https://github.com/mnchn-prog/thorvg.example
All reactions