void Camera::right(void) { float tempForward[3], tempUp[3], tempRight[3]; transformWithMouse(mouseLeftRight, mouseUpDown, tempForward, tempUp, tempRight); float vec[3]; vectorCopy(vec, tempRight); vectorMul(vec, cameraSpeed); vectorAdd(position, vec); }
int Game::getPlayerOnFinish() { for( size_t i = 0; i < players.size(); ++i ) { if( pointOnFinish( players[i].getPreviousPosition(), finishLine ) ) { continue; } if( finishLineIntersectsWithPlayer( i ) && vectorMul( finishLine, Line( players[i].getPreviousPosition(), players[i].getPosition() ) ) > 0 ) { players[i].cheat(); continue; } if( finishLineIntersectsWithPlayer( i ) && vectorMul( finishLine, Line( players[i].getPreviousPosition(), players[i].getPosition() ) ) < 0 ) { if( !players[i].isCheater() ) { return ( int ) i; } else { players[i].reduceCheat(); continue; } } } return -1; }
// PageRank float* pageRank(int nodes, float* A, int* IA, int* JA){ // Initialize row_vector to 1/nodes float row_vector[nodes]; for (int i = 0; i < nodes; ++i) row_vector[i] = 1/(float)(nodes); // Initialize rank_vector to 0 float* rank_vector = (float*)malloc(sizeof(float)*nodes); for (int j = 0; j < nodes; ++j) rank_vector[j] = 0; float error = 10000; float threshold = 0.001; for ( int idx = 0; error > threshold ; ++idx ){ float* vector1 = sparseMatrixMul(A, IA, JA, row_vector, nodes); float* vector2 = vectorMul(row_vector, P_VALUE, nodes); rank_vector = vectorAdd(vector1, vector2, nodes); // Error Calculation error = 0; for ( int i = 0; i < nodes; ++i ) error += abs(rank_vector[i] - row_vector[i]); memcpy((void*)row_vector, (void*)rank_vector, sizeof(float)*nodes); } for ( int i = 0; i < nodes; ++i ) printf("%f ", rank_vector[i] ); return rank_vector; }
// normalize a vector to be of magnitude 1 void normalizeVec(float* vec) { vectorMul(vec, 1 / lengthOfVec(vec)); }