void StVKReducedStiffnessMatrix::PrintMatrix()
{
  int i,j,k;
  int output;

  // free terms
  int index = 0;
  printf("{");
  for(output=0; output<r; output++)
  {
    printf("{");
    for(i=0; i<r; i++)
    {
      int i1 = output;
      int j1 = i;
      if (i1 > j1)
      {
        i1 = i;
        j1 = output;
      }
      printf("%.15f",freeCoef(i1,j1));
      if (i != r-1)
        printf(", ");
      index++;
      if (index % 5 == 4)
        printf("\n");
    }
    printf("}");
    if (output != r-1)
      printf(", ");
  }

  printf("} + ");

  // linear terms
  printf("{");
  index = 0;
  int indexEntry = 0;
  for(output=0; output<r; output++)
  {
    printf("{");
    for(i=0; i<r; i++)
    {
      int i1 = output;
      int j1 = i;
      if (i1 > j1)
      {
        i1 = i;
        j1 = output;
      }

      for(j=0; j<r; j++)
      {
        printf("%.15f * q%d",linearCoef(i1,j1,j),j);
        if (j != r - 1)
          printf(" + ");
        index++;

        if (index % 5 == 4)
          printf("\n");
      }

      if (i != r - 1)
        printf(", ");

      indexEntry++;
    }
    printf("}");
    if (output != r - 1)
      printf(",\n");
  }

  printf("}");

  // quadratic terms
  printf(" + {");
  index = 0;
  indexEntry = 0;
  for(output=0; output<r; output++)
  {
    printf("{");
    for(i=0; i<r; i++)
    {
      int i1 = output;
      int j1 = i;
      if (i1 > j1)
      {
        i1 = i;
        j1 = output;
      }

      for(j=0; j<r; j++)
        for(k=j; k<r; k++)
        {
          printf("%.15f * q%d * q%d",quadraticCoef(i1,j1,j,k),j,k);
          if (!((k == r - 1) && ( j == r-1)))
            printf(" + ");
          index++;

          if (index % 5 == 4)
            printf("\n");
        }

        if (i != r - 1)
          printf(", ");

        indexEntry++;
    }

    printf("}");
    if (output != r - 1)
      printf(",\n");
  }

  printf("}");
}
Пример #2
0
int removeFieldBack(
   BYTE *lpPointer,     /* pointer to current ticket buffer  */
   WORD       Width,         /* width of current ticket           */
   WORD       Height,        /* height of current ticket          */
   int        angle,         /* angle for map                   */
   LPBYTE     lpZoneStruct,  /* pointer to zone structure       */
   RECT    *lpFieldRect,   /* pointer to field rectangle      */
   BYTE  *BackStruct     /* pointer to background buffer    */
   ){
  int ret, i, ii, x, y, x1, x2, wImg, yy, ind;
  int xB, xE, k1, k2, yyB, yyE, xxB, xxE;
  int ch, mask, xCur, yCur;
  int LineWidth, ImgHeight;
  LONG lY;
  BYTE  *hptr;

    angleGlob=angle;
    lpZoneGlob=lpZoneStruct;

    protRect.left   = lpFieldRect->left;
    protRect.right  = lpFieldRect->right-1;
    protRect.top    = lpFieldRect->top;
    protRect.bottom = lpFieldRect->bottom-1;


    LineWidth=protRect.right - protRect.left+1;
    ImgHeight=protRect.bottom- protRect.top+1;
    wImg  =((LineWidth+31)/32)*4;

    ret=grid(Width,Height,(RECT*)&protRect,(RECT*)&gridTabProt[0],(STRUCT4POINTS *)&gridTabForm[0],
    		(int *)&numbOfGrid,GRID_X,GRID_Y,angle,lpZoneStruct,SCALEC);

    if(ret<0) {
             return(-1);
             }

/* rectangles loop */
    for(i=0;i<numbOfGrid;i++)  {
        ret=linearCoef((RECT*)&gridTabProt[i],(STRUCT4POINTS *)&gridTabForm[i],(COEF *)&lCoef);
            if(ret<0) {
//              MessageBeep(0);
//              MessageBox(hWnd,"linearCoef() ERROR !!!",NULL, MB_OK );
              return(-2);
              }
/* y loop */
        yyB=gridTabProt[i].top-protRect.top;
        yyE=gridTabProt[i].bottom-protRect.top;
        xxB=gridTabProt[i].left-protRect.left;
        xxE=gridTabProt[i].right-protRect.left;


        for(y=yyB;y<=yyE;y++) {
/* x loop */
              yCur=y+protRect.top;
              k1=xxB%8;
              xB=xxB/8;
              x1=xB;
              if(k1>0) x1++;
              k2=xxE%8;
              xE=xxE/8;
              x2=xE;
              if(k2<7) x2--;

/* first byte */
                 if(k1>0) {
                   yy=y;
                   yy=ImgHeight-1-y;
                   lY=(long)yy*(long)wImg;
                   hptr=BackStruct+lY+(LONG)xB;
                   ind=(int)(*hptr);
                   if(ind<0) {ind+=256;}
                   ind=255-ind;
                   ind&=mask_R[k1];
                   if(gr_ar[ind]>0) {
                       mask=LEFT_BIT;
                       mask >>=k1;
                       for(ii=k1;ii<8;ii++) {
                         ch=ind&mask;
                         if(ch!=0) {
                            putImgF(xB*8+protRect.left+ii,yCur,SCALEC,lpPointer,Width,Height,EPS_NX,EPS_NY);
                            }
                         mask >>=1;
                         }
                       }
                   }

/* interior bytes */
              for(x=x1;x<=x2;x++) {
                   xCur=x*8+protRect.left;
                   yy=y;
                   yy=ImgHeight-1-y;
                   lY=(LONG)yy*(LONG)wImg;
//                   hptr=(lpBackStruct->lpPointer)+lY+(LONG)x;
                   hptr=BackStruct+lY+(LONG)x;
                   ind=(int)(*hptr);
                   if(ind<0) {ind+=256;}
                   ind=255-ind;
                   if(gr_ar[ind]>0) {
                      mask=LEFT_BIT;
                      for(ii=0;ii<8;ii++) {
                        ch=ind&mask;
                        if(ch!=0) {
                            putImgF(xCur+ii,yCur,SCALEC,lpPointer,Width,Height,EPS_NX,EPS_NY);
                            }
                        mask >>=1;
                        }
                      }
                   } /* x loop */
void StVKReducedHessianTensor::PrintTensor()
{
  int i;
  int output;
  int input,deriv;

  // free terms
  int index = 0;
  printf("{");
  for(output=0; output<r; output++)
  {
    printf("{");
    for(input=0; input<r; input++)
    {
      int i1 = output;
      int j1 = input;
      if (j1 < i1) // swap them
      {
        j1 = output;
        i1 = input;
      }
      // now i1 <= j1

      printf("{");
      for(deriv=0; deriv<r; deriv++)
      {
        printf("%.15f",freeCoef(i1,j1,deriv));
        if (deriv != r-1)
          printf(", ");
        index++;
        if (index % 5 == 4)
          printf("\n");
      }
      printf("}");
      if (input != r-1)
        printf(", ");
    }
    printf("}");
    if (output != r-1)
      printf(", ");
  }

  printf("} +\n{");

  index = 0;
  for(output=0; output<r; output++)
  {
    printf("{");
    for(input=0; input<r; input++)
    {
      printf("{");
      int i1 = output;
      int j1 = input;
      if (j1 < i1) // swap them
      {
        j1 = output;
        i1 = input;
      }
      // now i1 <= j1

      for(deriv=0; deriv<r; deriv++)
      {
        for(i=0; i<r; i++)
        {
          printf("%.15f * q%d",linearCoef(i1,j1,deriv,i),i);
          if (i != r-1)
            printf("+ ");
          index++;
          if (index % 5 == 4)
            printf("\n");
        }
        if (deriv != r-1)
          printf(", ");
      }
      printf("}");
      if (input != r-1)
        printf(", ");
    }
    printf("}");
    if (output != r-1)
      printf(", ");
  }
  printf("}");
}