MatrixCondition::DiagonalMask MatrixCondition::calcMask(Diagonal d) { switch(d) { case UnknownDiagonal: return UncommittedDiagonal; case ZeroDiagonal: return ZeroDiagonal; case OneDiagonal: return OneDiagonal; case RealDiagonal: return RealDiagonal | calcMask(ZeroDiagonal) | calcMask(OneDiagonal); case ImaginaryDiagonal: return ImaginaryDiagonal | calcMask(ZeroDiagonal); default: SimTK_ASSERT1_ALWAYS(!"invalid MatrixCondition::Diagonal", "MatrixCondition::calcMask(Diagonal): value 0x%x is invalid.", d); return UnknownDiagonal; }; }
int main(int argc, char *argv[]) { sprites = loadImage("sprites.png"); fondo = loadImage("fondo.png"); if (!sprites || !fondo) return EXIT_FAILURE; for(int i = 0; i < 6; i++) nyancat[i] = fromSprites(i * 32, 0, 32, 20); for(int i = 0; i < 6; i++) nyancatMask[i] = calcMask(nyancat[i]); char key; unsigned long long int frame = 0; unsigned int x = 32, y = 32; IplImage *screen; while((key = cvWaitKey(1000 / 50)) != 'q') { #define STEP 2 if('d' == key && x < fondo->width - STEP) x += STEP; if('a' == key && x > STEP) x -= STEP; if('w' == key && y > STEP) y -= STEP; if('s' == key && y < fondo->height - STEP) y += STEP; screen = cvCloneImage(fondo); dibujarNyan((frame / 4) % 6, screen, x, y); cvShowImage("nyannyanyanyan", screen); ++frame; } return EXIT_SUCCESS; }
MatrixCondition::ConditionMask MatrixCondition::calcMask(Condition c) { switch(c) { case UnknownCondition: return UncommittedCondition; case Orthogonal: return Orthogonal; case PositiveDefinite: return PositiveDefinite; case WellConditioned: return WellConditioned | calcMask(PositiveDefinite) | calcMask(Orthogonal); case FullRank: return FullRank | calcMask(WellConditioned); case Singular: return UncommittedCondition; // can't get worse than this default: SimTK_ASSERT1_ALWAYS(!"invalid MatrixCondition::Condition", "MatrixCondition::calcMask(Condition): value 0x%x is invalid.", c); return UnknownCondition; }; }
MatrixOutline::OutlineMask MatrixOutline::calcMask(Outline outline) { switch(outline) { case NoOutline: return UncommittedOutline; case Scalar: return Scalar; case Column: return Column | calcMask(Scalar); case Row: return Row | calcMask(Scalar); case Square: return Square | calcMask(Scalar); case Wide: return Wide | calcMask(Square) | calcMask(Row); case Tall: return Tall | calcMask(Square) | calcMask(Column); case Rectangular: return Rectangular | calcMask(Wide) | calcMask(Tall); default: SimTK_ASSERT1_ALWAYS(!"invalid MatrixOutline::Outline", "MatrixOutline::calcMask(): value 0x%x is invalid.", outline); return NoOutline; }; }
void interactive(){ printf("\nEnter host address <x.y.z.t>: "); scanf("%s", hostAddress); hostAddCheck(); if (status == 1){ printf("Enter prefix: "); scanf("%s", prefix); prefixCheck(); } if (status == 1){ calcMask(); calcNetAdd(); calcHostPortion(); } printf("\n"); }