image->draw_line(2, r, g, b, x3, y3, x4, y4);
image->draw_line(2, r, g, b, x4, y4, x1, y1);
} else {
image->draw_line(2, r, g, b, x3, y3, x4, y4);
image->draw_line(2, r, g, b, x4, y4, x1, y1);
} else {
- // int xc = (x1 + x2 + x3 + x4)/4, yc = (y1 + y2 + y3 + y4)/4;
- // image->draw_line(1, r, g, b, xc - delta, yc, xc + delta, yc);
- // image->draw_line(1, r, g, b, xc, yc - delta, xc, yc + delta);
image->draw_line(2, r, g, b, x1, y1, x2, y2);
image->draw_line(2, r, g, b, x2, y2, x3, y3);
image->draw_line(2, r, g, b, x3, y3, x4, y4);
image->draw_line(2, r, g, b, x4, y4, x1, y1);
image->draw_line(2, r, g, b, x1, y1, x2, y2);
image->draw_line(2, r, g, b, x2, y2, x3, y3);
image->draw_line(2, r, g, b, x3, y3, x4, y4);
image->draw_line(2, r, g, b, x4, y4, x1, y1);
- // image->draw_line(2, r, g, b,
- // (2*xc + 5 * x1 + 5 * x2)/12, (2 * yc + 5 * y1 + 5 * y2)/12,
- // (x1 + x2)/2, (y1 + y2)/2);
- // image->draw_line(6, r, g, b,
- // (2*xc + 3 * x2 + 3 * x3)/8, (2 * yc + 3 * y2 + 3 * y3)/8,
- // (x2 + x3)/2, (y2 + y3)/2
- // );
image->draw_line(6, r, g, b, xmax, ymax, xmin, ymax);
image->draw_line(6, r, g, b, xmin, ymax, xmin, ymin);
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);
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);
} else {
image->draw_line(2, r, g, b, xmin, ymin, xmax, ymin);
image->draw_line(2, r, g, b, xmax, ymin, xmax, ymax);
if(edges) {
int delta = 3;
image->draw_ellipse(1, r, g, b, xc, yc, radius + delta, radius + delta, 0);
if(edges) {
int delta = 3;
image->draw_ellipse(1, r, g, b, xc, yc, radius + delta, radius + delta, 0);
-// 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::variance_tag) {
image->draw_ellipse(1, r, g, b, xc, yc, 8, 8, 0);
}
- _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;
- _head_belly_vx = _head_belly_vx/l * _head_radius * 2;
- _head_belly_vy = _head_belly_vy/l * _head_radius * 2;
+ _head_belly_vx = (_head_belly_vx / l) * _head_radius * 2;
+ _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;
_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;
- 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;
-
case PiReferential::RM_HEAD:
case PiReferential::RM_BELLY:
case PiReferential::RM_HEAD_BELLY:
case PiReferential::RM_HEAD:
case PiReferential::RM_BELLY:
case PiReferential::RM_HEAD_BELLY:
void PiReferential::draw(RGBImage *image, int level) {
int x1, y1, x2, y2, x3, y3, x4, y4;
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);
- }
-