コード例 #1
0
ファイル: oldroi.c プロジェクト: phoboz/volkit
int roiComputeElli(ROI *roi)
{
  int i, ix, iy, /*ox,*/ oy, n, s, w, h;

  w=roi->w; h=roi->h;
  if((roi->x=malloc(sizeof(int)))==NULL) return(-1);
  if((roi->y=malloc(sizeof(int)))==NULL) {free((char*)roi->x); return(-1);}
  roi->x[0]=0; roi->y[0]=h;
  n=1; oy=h;
  for(ix=1; ix<w; ix++) {
    iy=(jsqrt(h+h*h*(w-ix)*(w+ix)))/w; if(oy-iy>1) break;
    if((roi->x=(int*)realloc((char*)roi->x, (n+1)*sizeof(int)))==NULL)
      return -1;
    if((roi->y=(int*)realloc((char*)roi->y, (n+1)*sizeof(int)))==NULL) {
      free((char*)roi->x); free((char*)roi->y); return -1;}
    roi->x[n]=ix; roi->y[n++]=iy;
    oy=iy;
  }
  /*ox=ix;*/
  for(iy=oy-1; iy>=0; iy--) {
    ix=(jsqrt(w+w*w*(h-iy)*(h+iy)))/h;
    if((roi->x=(int*)realloc((char*)roi->x, (n+1)*sizeof(int)))==NULL)
      return -1;
    if((roi->y=(int*)realloc((char*)roi->y, (n+1)*sizeof(int)))==NULL) {
      free((char*)roi->x); free((char*)roi->y); return -1;}
    roi->x[n]=ix; roi->y[n++]=iy;
    /*ox=ix;*/
  }
  for(i=n-1, s=i; i>0; i--) {
    if((roi->x=(int*)realloc((char*)roi->x, (n+1)*sizeof(int)))==NULL)
      return -1;
    if((roi->y=(int*)realloc((char*)roi->y, (n+1)*sizeof(int)))==NULL) {
      free((char*)roi->x); free((char*)roi->y); return -1;}
    roi->x[n]=roi->x[--s]; roi->y[n++]=-roi->y[s];
  }
  for(i=n-1, s=i; i>0; i--) {
    if((roi->x=(int*)realloc((char*)roi->x, (n+1)*sizeof(int)))==NULL)
      return -1;
    if((roi->y=(int*)realloc((char*)roi->y, (n+1)*sizeof(int)))==NULL) {
      free((char*)roi->x); free((char*)roi->y); return -1;}
    roi->x[n]=-roi->x[--s]; roi->y[n++]=roi->y[s];
  }
  roi->point_nr=n;

  return(0);
}
コード例 #2
0
JNIEXPORT jdouble JNICALL
Java_java_lang_StrictMath_sqrt(JNIEnv *env, jclass unused, jdouble d)
{
    return (jdouble) jsqrt((double)d);
}