X-Git-Url: https://fleuret.org/cgi-bin/gitweb/gitweb.cgi?p=folded-ctf.git;a=blobdiff_plain;f=pi_referential.h;h=8d2613e02649fdb50619811ba81c95f429b05944;hp=04516f3743bf73c6cba64ae1eb45cd55c76d03da;hb=ccc2785ee823c934edcededc5c6448e4f9488f8b;hpb=6e1801915cc847204e8ae8a4ff04463b2e85f538 diff --git a/pi_referential.h b/pi_referential.h index 04516f3..8d2613e 100644 --- a/pi_referential.h +++ b/pi_referential.h @@ -46,19 +46,21 @@ class PiReferential { scalar_t _head_ux, _head_uy, _head_vx, _head_vy; scalar_t _head_ux_nopolarity, _head_uy_nopolarity, _head_vx_nopolarity, _head_vy_nopolarity; - // The body frame in that _common_scale. The vectors are of length the radii of the ellipse + //********************************************************************** + // Useless fields, but they are necessary so that the optimized code + // with g++ gives the same results as some reference + // experiments. Sorry for that. scalar_t _body_xc, _body_yc; - scalar_t _body_radius_1, _body_radius_2; scalar_t _body_tilt; + //********************************************************************** - // The belly frame is defined by the body location and head scale + // The belly frame is defined by the belly location and head scale scalar_t _belly_xc, _belly_yc; scalar_t _belly_ux, _belly_uy, _belly_vx, _belly_vy; scalar_t _belly_ux_nopolarity, _belly_uy_nopolarity, _belly_vx_nopolarity, _belly_vy_nopolarity; scalar_t _belly_window_scaling; - // The head-belly frame is defined by the head location and the body - // center location + // The head-belly frame is defined by the head location and the belly scalar_t _head_belly_xc, _head_belly_yc; scalar_t _head_belly_ux, _head_belly_uy, _head_belly_vx, _head_belly_vy; int _head_belly_edge_shift; @@ -74,36 +76,37 @@ public: PiReferential(PoseCell *cell); enum { - // A frame centered on the head, of size four times the head radius - // and, flipped verically if the body center is on the left of the - // head center + // A square frame centered on the head, of size four times the + // head radius and, flipped horizontally if the belly is on the + // left of the head center RM_HEAD, // Same as above, without the flipping RM_HEAD_NO_POLARITY, - // A frame centered on the body center, of size size times the - // head rardius, flipped vertically if the body center is on the - // left of the head center + + // A frame centered on the belly, of size eight times the head + // radius, flipped horizontally if the belly is on the left of the + // head center RM_BELLY, // Same as above, without the flipping RM_BELLY_NO_POLARITY, // A frame centered on the middle point between the head center - // and the body center, of size twice the distance head center - - // body center in the head-body direction, and of four times the - // head radius in the other + // and the belly, of size twice the distance head center - belly + // in the head-belly direction, and of four times the head radius + // in the other RM_HEAD_BELLY, // Same as above with rotation of the edges - RM_HEAD_BELLY_EDGES, + RM_HEAD_BELLY_EDGES }; int common_scale(); // The rectangle coordinates are in the reference frames. For the - // head for instance , [-1,1] x [-1,1] corresponds to the head - // bounding box + // head for instance [-0.5, 0.5] x [-0.5, 0.5] corresponds to the + // head bounding box void register_rectangle(int registration_mode, Rectangle *original, @@ -117,10 +120,6 @@ public: int registration_mode, Rectangle *window, int filled); - void draw_edge_and_scale(RGBImage *image, - int registration_mode, Rectangle *window, - int _tag, int _edge_scale); - static void print_registration_mode(ostream *out, int registration_mode); };