Added the non-disclosed problems.
[svrt.git] / vision_problem_10.cc
diff --git a/vision_problem_10.cc b/vision_problem_10.cc
new file mode 100644 (file)
index 0000000..00fdec3
--- /dev/null
@@ -0,0 +1,54 @@
+
+////////////////////////////////////////////////////////////////////
+// START_IP_HEADER                                                //
+//                                                                //
+// Written by Francois Fleuret                                    //
+// Contact <francois.fleuret@idiap.ch> for comments & bug reports //
+//                                                                //
+// END_IP_HEADER                                                  //
+////////////////////////////////////////////////////////////////////
+
+#include "vision_problem_10.h"
+#include "shape.h"
+
+VisionProblem_10::VisionProblem_10() { }
+
+void VisionProblem_10::generate(int label, Vignette *vignette) {
+  int nb_shapes = 4;
+  int xs[nb_shapes], ys[nb_shapes];
+
+  int error;
+  do {
+    do {
+      if(label == 1) {
+        scalar_t alpha = drand48() * 2 * M_PI;
+        scalar_t radius = drand48() * Vignette::width / 2;
+        scalar_t xc = drand48() * Vignette::width;
+        scalar_t yc = drand48() * Vignette::height;
+        for(int n = 0; n < nb_shapes; n++) {
+          xs[n] = int(xc + part_size/2 +
+                      radius * sin(alpha + n * 2 * M_PI / scalar_t(nb_shapes)));
+          ys[n] = int(yc + part_size/2 +
+                      radius * cos(alpha + n * 2 * M_PI / scalar_t(nb_shapes)));
+        }
+      } else {
+        for(int n = 0; n < nb_shapes; n++) {
+          xs[n] = int(drand48() * Vignette::width);
+          ys[n] = int(drand48() * Vignette::height);
+        }
+      }
+    } while(cluttered_shapes(part_size, nb_shapes, xs, ys));
+
+    vignette->clear();
+
+    Shape shape;
+    error = 0;
+    for(int n = 0; n < nb_shapes; n++) {
+      if(n == 0) {
+        shape.randomize(part_size / 2, part_hole_size / 2);
+      }
+      error |= shape.overwrites(vignette, xs[n], ys[n]);
+      shape.draw(vignette, xs[n], ys[n]);
+    }
+  } while(error);
+}