示例#1
0
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);
}
示例#2
0
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;


}
示例#4
0
// normalize a vector to be of magnitude 1
void normalizeVec(float* vec)
{
	vectorMul(vec, 1 / lengthOfVec(vec));
}