diff options
| -rw-r--r-- | renders/anim_graph_rotate.c | 45 |
1 files changed, 27 insertions, 18 deletions
diff --git a/renders/anim_graph_rotate.c b/renders/anim_graph_rotate.c index e0b3a61..bb7a93e 100644 --- a/renders/anim_graph_rotate.c +++ b/renders/anim_graph_rotate.c @@ -15,22 +15,23 @@ main() { u32 width = 512; u32 height = 512; const u32 FPS = 60; - u32 frames = FPS * 5; + u32 frames = FPS * 10; - PixelCallback* child; - TransformCenter childLeft = { .centerX = width / 4, .centerY = height * 3 / 4, }; - TransformCenter childRight = { .centerX = width * 3 / 4, .centerY = height * 3 / 4, }; + PixelCallback *root, *child; + TransformCenter nodeTop = { .centerX = width / 2, .centerY = height / 4, }; + TransformCenter nodeLeft = { .centerX = width / 4, .centerY = height * 3 / 4, }; + TransformCenter nodeRight = { .centerX = width * 3 / 4, .centerY = height * 3 / 4, }; PixelCallback* segment; LineSegment segmentRight = { - .aX = width / 2, .aY = height / 4, - .bX = width * 3 / 4, .bY = height * 3 / 4, - .width = 20, .color = 0xFFFF00FF, + .aX = nodeTop.centerX, .aY = nodeTop.centerY, + .bX = nodeRight.centerX, .bY = nodeRight.centerY, + .width = 30, .color = 0xFFFF00FF, }; LineSegment segmentLeft = { - .aX = width / 2, .aY = height / 4, - .bX = width / 4, .bY = height * 3 / 4, - .width = 20, .color = 0xFF0088FF, + .aX = nodeLeft.centerX, .aY = nodeLeft.centerY, + .bX = nodeTop.centerX, .bY = nodeTop.centerY, + .width = 30, .color = 0xFF0088FF, }; PixelCallback* callbacks[] = { @@ -42,15 +43,13 @@ main() { NULL, segment = LineSegment_setup(segmentRight), /* Root node */ - TransformCenter_setup((TransformCenter){ - .centerX = width / 2, .centerY = height / 4, - }), + root = TransformCenter_setup(nodeTop), Circle_setup((Circle){ .radius = 60, .color = 0xFFFF0000, }), /* Child node */ NULL, - child = TransformCenter_setup(childRight), + child = TransformCenter_setup(nodeRight), Circle_setup((Circle){ .radius = 60, .color = 0xFF00FF00, }), @@ -60,10 +59,15 @@ main() { FrameCallback* frameCallbacks[] = { /* Move right to left */ FrameRange_setup((FrameRange){ - .startFrame = frames / 3 - FPS, .endFrame = frames / 3, + .startFrame = FPS * 1, .endFrame = FPS * 3, + }), + Interpolate_setup((Interpolate){ + .startValue = &nodeTop, .endValue = &nodeLeft, + .value = root->callback_self, + .interpolate = (f_interpolate)Interpolate_TransformCenter, }), Interpolate_setup((Interpolate){ - .startValue = &childRight, .endValue = &childLeft, + .startValue = &nodeRight, .endValue = &nodeTop, .value = child->callback_self, .interpolate = (f_interpolate)Interpolate_TransformCenter, }), @@ -75,10 +79,15 @@ main() { /* Move left to right */ NULL, FrameRange_setup((FrameRange){ - .startFrame = frames * 2 / 3 - FPS, .endFrame = frames * 2 / 3, + .startFrame = FPS * 6, .endFrame = FPS * 8, + }), + Interpolate_setup((Interpolate){ + .startValue = &nodeLeft, .endValue = &nodeTop, + .value = root->callback_self, + .interpolate = (f_interpolate)Interpolate_TransformCenter, }), Interpolate_setup((Interpolate){ - .startValue = &childLeft, .endValue = &childRight, + .startValue = &nodeTop, .endValue = &nodeRight, .value = child->callback_self, .interpolate = (f_interpolate)Interpolate_TransformCenter, }), |
