-
Notifications
You must be signed in to change notification settings - Fork 4
/
vis_test.cpp
86 lines (60 loc) · 2.32 KB
/
vis_test.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
#include <iostream>
#include <cmath>
#include <memory>
#include <vector>
#include "include/camera.h"
#include "include/scene.h"
void first_scene(camera& cam, scene& world) {
auto title = std::make_shared<text>(vec{0, 100}, 50, "GathVL Test");
auto ball = std::make_shared<ellipse>(vec{640, 360}, vec{0, 0}, 0, true);
ball->add_animator<vec_animator>(0, 49, &ball->size, vec{0, 0},
vec{50,50});
ball->add_animator<vec_animator>(50, 99, &ball->location, vec{640, 360},
vec{-50, -50});
auto rec = std::make_shared<rectangle>(vec{-50, -50}, vec{50, 50}, M_PI / 4,
true);
rec->add_animator<vec_animator>(100, 149, &rec->location, vec{-50, -50},
vec{640, 360});
rec->add_animator<vec_animator>(150, 199, &rec->size, vec{50, 50},
vec{0, 0});
world.add_layer();
world.add_object(title, 0);
world.add_object(ball, 1);
world.add_object(rec, 1);
for (int i = 0; i < 200; ++i) {
world.update(i);
cam.encode_frame(world);
}
world.clear();
}
void second_scene(camera& cam, scene& world) {
auto title = std::make_shared<text>(vec{0, 720}, 50, "GathVL Test");
auto y_axis = std::make_shared<line>(vec{50, 10}, vec{50, 610});
auto x_axis = std::make_shared<line>(vec{1250, 610}, vec{50, 610});
std::vector<vec> exp_points;
vec origin = {50, 610};
for (int i = 0; i < 100; ++i) {
exp_points.emplace_back(i * 12, std::exp(i * 0.06) / 0.68);
}
auto exp_curve =
std::make_shared<curve>(std::vector<vec>(), origin);
exp_curve->add_animator<vector_animator<vec>>(0, 50, 0, exp_points,
&exp_curve->points);
world.add_object(title, 0);
world.add_object(y_axis, 0);
world.add_object(x_axis, 0);
world.add_object(exp_curve, 0);
for (int i = 0; i < 51; ++i) {
world.update(i);
cam.encode_frame(world);
}
}
int main() {
camera cam(vec{1280, 720});
scene world = scene({1280, 720}, {0, 0, 0, 1});
cam.add_encoder<video_encoder>("/tmp/video.mp4", cam.size, 50);
first_scene(cam, world);
second_scene(cam, world);
cam.clear_encoders();
return 0;
}