22 #include "../ami_image/image.h"
25 #define image_draw_DEBUG
37 void draw_cercle(
ami::image<T> &imagen,
double x0,
double y0,
float radius,
unsigned char red_arrow=255,
unsigned char green_arrow=0,
unsigned char blue_arrow=0);
53 void image_draw::draw_cercle(
57 unsigned char red_arrow,
unsigned char green_arrow,
unsigned char blue_arrow)
60 int width=imagen.width();
61 int height=imagen.height();
62 int size=width*height;
64 float m,n,paso=(float)0.06;
66 for (
int k=0;k<imagen.nChannels();k++)
68 unsigned char cercle_color = 0;
72 cercle_color= red_arrow;
75 cercle_color= green_arrow;
78 cercle_color= blue_arrow;
81 if( (x0+radius)<0 || (y0+radius)<0 )
return;
82 if( (x0-radius)>width || (y0-radius)>height)
return;
83 for(i=(
int) (y0-radius-1);i<=(y0+radius);i++){
84 for(j=(
int) (x0-radius-1);j<=(x0+radius);j++){
85 if(i<0 || i>=height || j<0 || j>=width)
continue;
87 if( ((i-y0)*(i-y0)+(j-x0)*(j-x0))<(radius*radius) ) cont++;
88 if( ((i+1-y0)*(i+1-y0)+(j-x0)*(j-x0))<(radius*radius) ) cont++;
89 if( ((i-y0)*(i-y0)+(j+1-x0)*(j+1-x0))<(radius*radius) ) cont++;
90 if( ((i+1-y0)*(i+1-y0)+(j+1-x0)*(j+1-x0))<(radius*radius) ) cont++;
91 if( cont==4 ) imagen[i*width+j+k*size]=cercle_color;
94 for(n=(
float)i;n<=(i+1);n+=paso){
95 for(m=(
float)j;m<=(j+1);m+=paso){
97 if( ((n-y0)*(n-y0)+(m-x0)*(m-x0))<radius*radius ) cont2++;
100 m=(float) cont2/cont;
101 imagen[i*width+j+k*size]=(
unsigned char) (cercle_color*m+imagen[i*width+j+k*size]*(1-m));
Definition: image_draw.h:33
Class to store multiChannel images and basic methods.
Definition: image.h:65