67b2fd11ba4740974e53985ff4c6e88b89bbde09
[universe.git] / dummy.cc
1
2 // Written and (C) by Francois Fleuret
3 // Contact <francois.fleuret@idiap.ch> for comments & bug reports
4
5 #include "task.h"
6 #include "universe.h"
7 #include "manipulator.h"
8
9 class Dummy : public Task {
10 public:
11
12   virtual const char *name() { return "DUMMY"; }
13
14   virtual int nb_degrees() { return 1; }
15
16   virtual int width() { return 600; }
17
18   virtual int height() { return 700; }
19
20   virtual void init(Universe *universe, int degree) {
21     Polygon *p;
22     scalar_t width = 80, height = 80;
23     scalar_t deltax = 100, deltay = 100;
24
25     for(int k = 0; k < 4; k++) {
26       scalar_t x0 = k * deltax;
27       scalar_t y0 = 0;
28       p = new Polygon(1.0, 1.0, scalar_t(k)/scalar_t(4), 0.0, 0, 0, 4);
29       p->set_vertex(0, 0, 0);
30       p->set_vertex(1, width, 0);;
31       p->set_vertex(2, width, height);
32       p->set_vertex(3, 0, height);
33       p->set_position(x0 + deltax/2, y0 + deltay/2, 0);
34       p->set_speed(0, 0, 0);
35       universe->initialize_polygon(p);
36       universe->add_polygon(p);
37     }
38
39     for(int k = 0; k < 2; k++) {
40       scalar_t x0 = deltax + k * deltax * 2;
41       scalar_t y0 = deltay;
42       p = new Polygon(1.0, scalar_t(k)/scalar_t(2), 1.0, 0.0, 0, 0, 4);
43       p->set_vertex(0, 0, 0);
44       p->set_vertex(1, width + deltax, 0);;
45       p->set_vertex(2, width + deltax, height);
46       p->set_vertex(3, 0, height);
47       p->set_position(x0, y0 + deltay/2, 0);
48       p->set_speed(0, 0, 0);
49       universe->initialize_polygon(p);
50       universe->add_polygon(p);
51     }
52
53     scalar_t x0 = deltax;
54     scalar_t y0 = 2 * deltay;
55     p = new Polygon(1.0, 1.0, 1.0, 0.0, 0, 0, 4);
56     p->set_vertex(0, 0, 0);
57     p->set_vertex(1, width + 3 * deltax, 0);;
58     p->set_vertex(2, width + 3 * deltax, height);
59     p->set_vertex(3, 0, height);
60     p->set_position(x0 + deltax, y0 + deltay/2, 0);
61     p->set_speed(0, 0, 0);
62     universe->initialize_polygon(p);
63     universe->add_polygon(p);
64
65     p = new Polygon(1.0, 0.8, 0.2, 0.8, 0, 0, 8);
66     p->set_vertex(0,   0.0,   0.0);
67     p->set_vertex(1, 180.0,   0.0);
68     p->set_vertex(2, 180.0, 220.0);
69     p->set_vertex(3,   0.0, 220.0);
70     p->set_vertex(4,   0.0, 180.0);
71     p->set_vertex(5, 140.0, 180.0);
72     p->set_vertex(6, 140.0,  40.0);
73     p->set_vertex(7,   0.0,  40.0);
74     p->set_position(120, 420, 0);
75     p->set_speed(0, 0, 0);
76     universe->initialize_polygon(p);
77     universe->add_polygon(p);
78
79     int ne = 25;
80     p = new Polygon(1.0, 0.0, 0.25, 1.0, 0, 0, ne);
81     for(int e = 0; e < ne; e++) {
82       scalar_t alpha = 2 * M_PI * scalar_t(e) / scalar_t(ne);
83       p->set_vertex(e,  200 + 50 * cos(alpha), 200 + 70 * sin(alpha));
84     }
85     p->set_position(400, 400, 0);
86     p->set_speed(0, 0, 0);
87     universe->initialize_polygon(p);
88     universe->add_polygon(p);
89   }
90
91   virtual void update(scalar_t dt, Universe *universe, Manipulator *manipulator) { }
92
93   virtual scalar_t reward(Universe *universe, Manipulator *manipulator) { return 0.0; }
94
95   virtual void draw(SimpleWindow *window) { }
96
97 };
98
99 extern "C" Task *new_task() {
100   return new Dummy();
101 }