int compareMatrices(int** a, int** b){ int aWidth = xMatrix(a); int bWidth = xMatrix(b); if (aWidth > bWidth){ return 1; } else if (aWidth < bWidth){ return -1; } int w = aWidth; int aHeight = yMatrix(a); int bHeight = yMatrix(b); if (aHeight > bHeight){ return 1; } else if (aHeight < bHeight){ return -1; } int l = aWidth; for (int i = 0; i < w; i++){ for (int j = 0; j < l; j++){ if (a[i][j] > b[i][j]){ return 1; } else if (a[i][j] < b[i][j]){ return -1; } } } return 0; }
void printMatrix(int** a){ printf("[\n"); int n = xMatrix(a); int m = yMatrix(a); for (int i = 0; i < n; i++){ printMatrixRow(a[i], m); } printf("]\n"); }
/* * The client code for the stream. Relies heavily on the functionality * created by getOrder and advance Graph in order to do the heavy lifting * for stream generation. */ long getNextValue(Graph* g){ int index = getOrder(g->order, g->nextOrder); long result = g->running[index][index]; g->nextOrder++; if (g->nextOrder >= xMatrix(g->graph)){ g->nextOrder = 0; advanceGraph(g); } return result; }
void sortMatrixRows(int** a){ int madeSwap = 1; while (madeSwap) { madeSwap = 0; for(int i = 0; i < xMatrix(a)-1; i++){ if (compareMatrixRow(a,i,a,i+1) == 1){ swapMatrixRow(a, i, i+1); madeSwap = 1; } } } }
Matrix4 &Matrix4::FromEulerAngle(const EulerAngle &euler) { float fCos, fSin; fCos = Cos(euler.yaw); fSin = Sin(euler.yaw); Matrix3 yMatrix(fCos, 0.0, fSin, 0.0, 1.0, 0.0, -fSin, 0.0, fCos); fCos = Cos(euler.pitch); fSin = Sin(euler.pitch); Matrix3 xMatrix(1.0, 0.0, 0.0, 0.0, fCos, -fSin, 0.0, fSin, fCos); fCos = Cos(euler.roll); fSin = Sin(euler.roll); Matrix3 zMatrix(fCos, -fSin, 0.0, fSin, fCos, 0.0, 0.0, 0.0, 1.0); *this = yMatrix * (xMatrix * zMatrix); return *this; }
int size(Graph* g){ return xMatrix(g->graph); }