29 memset(ell, 0,
sizeof(
ELLIPSE));
30 ell->
status=ELLIPSE_STATUS_INITIALIZED;
52 if(ell->
status<ELLIPSE_STATUS_OCCUPIED)
return;
66 ell->
status=ELLIPSE_STATUS_INITIALIZED;
75 printf(
"ellipseInfo()\n");
76 if(ell->
status==ELLIPSE_STATUS_UNINITIALIZED){
77 printf(
"Ellipse data not initialized.\n");
return;
80 printf(
"Center: (%.2f,%.2f)\n",ell->
center[0],ell->
center[1]);
81 printf(
"Inclination (degrees): %f\n",ell->
inclination);
82 printf(
"Image dimension: %i\n",ell->
imageDim);
83 printf(
"Value: %f\n",ell->
value);
97 if(
ELLIPSE_VERBOSE) printf(
"ELLIPSE:ellipseAllocate(*ell,%i) \n",imgDim);
100 if(ell->
status==ELLIPSE_STATUS_UNINITIALIZED)
return(1);
101 if(imgDim<1 || imgDim>4096)
return(2);
104 ell->
ellipseptr=(
int**)calloc(imgDim,
sizeof(
int*));
105 for(i=0;i<imgDim;i++){
106 ell->
ellipseptr[i]=(
int*)calloc(imgDim,
sizeof(
int));
137 float d, x, y, inclination;
141 if(ell->
status==ELLIPSE_STATUS_UNINITIALIZED)
return(1);
142 if(imgDim<1 || imgDim>4096)
return(2);
143 if(0>semis[0] || 0>semis[1])
return(3);
144 if(-(
float)imgDim/2.>cent[0] || (
float)imgDim/2.<cent[0])
return(4);
145 if(-(
float)imgDim/2.>cent[1] || (
float)imgDim/2.<cent[1])
return(5);
160 inclination= -(float)(incli/90.);
163 for(row=0; row<imgDim; row++) {
164 for(col=0; col<imgDim; col++) {
166 y=(float)imgDim*0.5 - (
float)row - cent[1];
169 x=(float)col - (
float)imgDim*0.5 - (cent[0] + inclination*y);
170 d=(x*x)/(semis[0]*semis[0]) + (y*y)/(semis[1]*semis[1]);
205 float v, incli, semiaxis[2], center[2], imgDim;
210 if(fread(&v,
sizeof(
float),1,fp)==0) {fclose(fp);
return(2);}
211 if(fread(&semiaxis[0],
sizeof(
float),1,fp)==0) {fclose(fp);
return(2);}
212 if(fread(&semiaxis[1],
sizeof(
float),1,fp)==0) {fclose(fp);
return(2);}
213 if(fread(¢er[0],
sizeof(
float),1,fp)==0) {fclose(fp);
return(2);}
214 if(fread(¢er[1],
sizeof(
float),1,fp)==0) {fclose(fp);
return(2);}
215 if(fread(&incli,
sizeof(
float),1,fp)==0) {fclose(fp);
return(2);}
216 if(fread(&imgDim,
sizeof(
float),1,fp)==0) {fclose(fp);
return(2);}
218 if(feof(fp))
return 1;
239 fwrite(&(ell->
value),
sizeof(
float),1,fp);
240 fwrite(&(ell->
semiaxis[0]),
sizeof(
float),1,fp);
241 fwrite(&(ell->
semiaxis[1]),
sizeof(
float),1,fp);
242 fwrite(&(ell->
center[0]),
sizeof(
float),1,fp);
243 fwrite(&(ell->
center[1]),
sizeof(
float),1,fp);
245 fwrite(&(ell->
imageDim),
sizeof(
float),1,fp);
257 if(ell->
status==ELLIPSE_STATUS_UNINITIALIZED)
return(-1);
268 if(ell->
status==ELLIPSE_STATUS_UNINITIALIZED)
return(-1);
280 if(ell->
status==ELLIPSE_STATUS_UNINITIALIZED)
return(-1);
292 if(ell->
status==ELLIPSE_STATUS_UNINITIALIZED)
return(-1);
303 if(ell->
status==ELLIPSE_STATUS_UNINITIALIZED)
return(-1);
315 if(ell->
status==ELLIPSE_STATUS_UNINITIALIZED)
return(-1);
326 if(ell->
status==ELLIPSE_STATUS_UNINITIALIZED)
return(-1);
342 if(ell->
status==ELLIPSE_STATUS_UNINITIALIZED)
return((
int**)-1);
int ellipseAllocate(ELLIPSE *ell, int imgDim)
void ellipseInfo(ELLIPSE *ell)
int ellipseReadEllipse(FILE *fp, ELLIPSE *ell)
float ellipseGetInclination(ELLIPSE *ell)
int ellipseGetImgSize(ELLIPSE *ell)
int ellipseSetFromParams(ELLIPSE *ell, int imgDim, float *semis, float *cent, float incli, float val)
float ellipseGetMinor(ELLIPSE *ell)
int ELLIPSE_VERBOSE
Drive in verbose mode if not 0.
int ellipseGetValue(ELLIPSE *ell)
float ellipseGetCenterY(ELLIPSE *ell)
void ellipseInit(ELLIPSE *ell)
void ellipseEmpty(ELLIPSE *ell)
int ** ellipseGetArray(ELLIPSE *ell)
float ellipseGetMajor(ELLIPSE *ell)
int ellipseSaveEllipse(ELLIPSE *ell, FILE *fp)
float ellipseGetCenterX(ELLIPSE *ell)
int ellipseIsInside(ELLIPSE *ell, int row, int col)
int ELLIPSE_TEST
Drive in test mode if not 0.
Header file for libtpcrec.
Ellipse on two dimensional plane.
float value
Value inside the ellipse.
float inclination
Inclination (degrees).
char status
ellipse status.
int imageDim
Size of the image plane on which the ellipse is defined.