automatic commit
[folded-ctf.git] / pi_referential.cc
index 6e7eb3e..6f56099 100644 (file)
@@ -52,11 +52,6 @@ void PiReferential::draw_frame(RGBImage *image,
     r = 255; g = 0; b = 0;
     break;
 
-  case PiReferential::RM_BODY:
-  case PiReferential::RM_BODY_EDGES:
-    r = 0; g = 128; b = 255;
-    break;
-
   default:
     cerr << "INCONSISTENCY" << endl;
     abort();
@@ -120,11 +115,6 @@ void PiReferential::draw_window(RGBImage *image,
     r = 255; g = 0; b = 0;
     break;
 
-  case PiReferential::RM_BODY:
-  case PiReferential::RM_BODY_EDGES:
-    r = 0; g = 128; b = 255;
-    break;
-
   default:
     cerr << "INCONSISTENCY" << endl;
     abort();
@@ -142,37 +132,12 @@ void PiReferential::draw_window(RGBImage *image,
     image->draw_line(6, r, g, b, xmax, ymax, xmin, ymax);
     image->draw_line(6, r, g, b, xmin, ymax, xmin, ymin);
 
-//     if(filled) {
-//       int delta = 6;
-//       for(int d = ymin - ymax; d <= xmax - xmin; d += delta) {
-//         int x1 = xmin + d;
-//         int y1 = ymin;
-//         int x2 = xmin + d + ymax - ymin;
-//         int y2 = ymax;
-//         if(x1 < xmin) { y1 = y1 + (xmin - x1); x1 = xmin; }
-//         if(x2 > xmax) { y2 = y2 - (x2 - xmax); x2 = xmax; }
-//         image->draw_line(3, r, g, b, x1, y1, x2, y2);
-//       }
-//     }
-
     r =   0; g =   0; b =   0;
     image->draw_line(2, r, g, b, xmin, ymin, xmax, ymin);
     image->draw_line(2, r, g, b, xmax, ymin, xmax, ymax);
     image->draw_line(2, r, g, b, xmax, ymax, xmin, ymax);
     image->draw_line(2, r, g, b, xmin, ymax, xmin, ymin);
 
-//     if(filled) {
-//       int delta = 6;
-//       for(int d = ymin - ymax; d <= xmax - xmin; d += delta) {
-//         int x1 = xmin + d;
-//         int y1 = ymin;
-//         int x2 = xmin + d + ymax - ymin;
-//         int y2 = ymax;
-//         if(x1 < xmin) { y1 = y1 + (xmin - x1); x1 = xmin; }
-//         if(x2 > xmax) { y2 = y2 - (x2 - xmax); x2 = xmax; }
-//         image->draw_line(1, r, g, b, x1, y1, x2, y2);
-//       }
-//     }
   } else {
     image->draw_line(2, r, g, b, xmin, ymin, xmax, ymin);
     image->draw_line(2, r, g, b, xmax, ymin, xmax, ymax);
@@ -225,12 +190,6 @@ void PiReferential::draw_edge_and_scale(RGBImage *image,
     r = 255; g = 0; b = 0;
     break;
 
-  case PiReferential::RM_BODY_EDGES:
-    edges = 1;
-  case PiReferential::RM_BODY:
-    r = 0; g = 128; b = 255;
-    break;
-
   default:
     cerr << "INCONSISTENCY" << endl;
     abort();
@@ -285,9 +244,6 @@ void PiReferential::draw_edge_and_scale(RGBImage *image,
 
     scalar_t l = sqrt(dx * dx + dy * dy);
 
-//     dx = dx / l;
-//     dy = dy / l;
-
     if(edges) {
       int delta = 3;
       image->draw_ellipse(1, r, g, b, xc, yc, radius + delta, radius + delta, 0);
@@ -300,23 +256,11 @@ void PiReferential::draw_edge_and_scale(RGBImage *image,
                        int(xc + u * dx + s * dy), int(yc + u * dy - s * dx));
     }
 
-//     for(int y = yc - radius; y <= yc + radius; y++) {
-//       for(int x = xc - radius; x <= xc + radius; x++) {
-//         if(x >= 0 && x < image->width() && y >= 0 && y < image->height() &&
-//            (x - xc) * dx + (y - yc) * dy >= 0) {
-//           image->draw_point(r, g, b, x, y);
-//         }
-//       }
-//     }
-
   }
 
   else if(_tag == RichImage::variance_tag) {
     image->draw_ellipse(1, r, g, b, xc, yc, 8, 8, 0);
   }
-
-  //   else if(_tag >= RichImage::first_gray_tag && _tag < RichImage::first_gray_tag + RichImage::nb_gray_tags) {
-  //   }
 }
 
 PiReferential::PiReferential(PoseCell *cell) {
@@ -338,9 +282,10 @@ PiReferential::PiReferential(PoseCell *cell) {
 
   // Body location
 
-  _body_xc = cell->_body_xc.middle() * discrete_scale_ratio;
-  _body_yc = cell->_body_yc.middle() * discrete_scale_ratio;
-  _body_window_scaling = sqrt(_body_radius_1 * _body_radius_2);
+  _body_xc = cell->_belly_xc.middle() * discrete_scale_ratio;
+  _body_yc = cell->_belly_yc.middle() * discrete_scale_ratio;
+
+  _body_tilt = 0;
 
   if((_head_xc - _body_xc) * cos(_body_tilt) + (_head_yc - _body_yc) * sin(_body_tilt) > 0) {
     _body_tilt += M_PI;
@@ -350,14 +295,14 @@ PiReferential::PiReferential(PoseCell *cell) {
 
   const scalar_t belly_frame_factor = 2.0;
 
-  _belly_xc = _body_xc;
-  _belly_yc = _body_yc;
+  _belly_xc = cell->_belly_xc.middle() * discrete_scale_ratio;
+  _belly_yc = cell->_belly_yc.middle() * discrete_scale_ratio;
   _belly_window_scaling = _head_window_scaling * belly_frame_factor;
 
   // Head-belly location
 
-  _head_belly_xc = (_head_xc + _body_xc) * 0.5;
-  _head_belly_yc = (_head_yc + _body_yc) * 0.5;
+  _head_belly_xc = (_head_xc + _belly_xc) * 0.5;
+  _head_belly_yc = (_head_yc + _belly_yc) * 0.5;
 
   //////////////////////////////////////////////////////////////////////
   // Frames
@@ -417,16 +362,6 @@ PiReferential::PiReferential(PoseCell *cell) {
   _head_belly_vy = _head_belly_vy/l * _head_radius * 2;
   _head_belly_edge_shift = int(floor(- RichImage::nb_edge_tags * atan2(_head_belly_ux, _head_belly_uy) / (2 * M_PI) + 0.5));
   _head_belly_edge_shift = (RichImage::nb_edge_tags + _head_belly_edge_shift) % RichImage::nb_edge_tags;
-
-  // Body frame
-
-  _body_ux =   cos(_body_tilt) * _body_radius_1 * 2.0;
-  _body_uy =   sin(_body_tilt) * _body_radius_1 * 2.0;
-  _body_vx = - sin(_body_tilt) * _body_radius_2 * 2.0;
-  _body_vy =   cos(_body_tilt) * _body_radius_2 * 2.0;
-
-  _body_edge_shift = int(floor(RichImage::nb_edge_tags * _body_tilt / (2 * M_PI) + 0.5));
-  _body_edge_shift = (RichImage::nb_edge_tags + _body_edge_shift) % RichImage::nb_edge_tags;
 }
 
 int PiReferential::common_scale() {
@@ -489,16 +424,6 @@ void PiReferential::register_rectangle(int registration_mode,
     }
     break;
 
-  case RM_BODY:
-  case RM_BODY_EDGES:
-    {
-      xc = _body_xc + alpha * _body_ux + beta * _body_vx;
-      yc = _body_yc + alpha * _body_uy + beta * _body_vy;
-      w = (original->xmax - original->xmin) * _body_window_scaling;
-      h = (original->ymax - original->ymin) * _body_window_scaling;
-    }
-    break;
-
   default:
     cerr << "Undefined registration mode." << endl;
     abort();
@@ -527,7 +452,6 @@ int PiReferential::register_edge(int registration_mode, int edge_type) {
     case PiReferential::RM_HEAD:
     case PiReferential::RM_BELLY:
     case PiReferential::RM_HEAD_BELLY:
-    case PiReferential::RM_BODY:
       if(_horizontal_polarity < 0) {
         e = (RichImage::nb_edge_tags - e) % RichImage::nb_edge_tags;
       }
@@ -540,13 +464,6 @@ int PiReferential::register_edge(int registration_mode, int edge_type) {
       e += _head_belly_edge_shift;
       break;
 
-    case PiReferential::RM_BODY_EDGES:
-      if(_horizontal_polarity < 0) {
-        e = (RichImage::nb_edge_tags - e) % RichImage::nb_edge_tags;
-      }
-      e += _body_edge_shift;
-      break;
-
     default:
       cerr << "INCONSISTENCY" << endl;
       abort();
@@ -564,22 +481,6 @@ int PiReferential::register_edge(int registration_mode, int edge_type) {
 void PiReferential::draw(RGBImage *image, int level) {
   int x1, y1, x2, y2, x3, y3, x4, y4;
 
-  if(level >= 2) {
-
-    // Draw the RM_BODY reference frame
-
-    x1 = int(_body_xc + _body_ux + _body_vx);
-    y1 = int(_body_yc + _body_uy + _body_vy);
-    x2 = int(_body_xc - _body_ux + _body_vx);
-    y2 = int(_body_yc - _body_uy + _body_vy);
-    x3 = int(_body_xc - _body_ux - _body_vx);
-    y3 = int(_body_yc - _body_uy - _body_vy);
-    x4 = int(_body_xc + _body_ux - _body_vx);
-    y4 = int(_body_yc + _body_uy - _body_vy);
-
-    draw_frame(image, RM_BODY, x1, y1, x2, y2, x3, y3, x4, y4);
-  }
-
   if(level >= 1) {
 
     // Draw the RM_BELLY reference frame
@@ -643,12 +544,6 @@ void PiReferential::print_registration_mode(ostream *out, int registration_mode)
   case RM_HEAD_BELLY_EDGES:
     (*out) << "RM_HEAD_BELLY_EDGES";
     break;
-  case RM_BODY:
-    (*out) << "RM_BODY";
-    break;
-  case RM_BODY_EDGES:
-    (*out) << "RM_BODY_EDGES";
-    break;
   default:
     abort();
   }