/** * int main() * * Descricao: * Funcao principal do programa que contem um loop (do-while) contendo a chamada * das funcoes que calculam as variaveis utilizadas pelo algoritmo Gauss-Legendre * a cada iteracao. * * Parametros de entrada: * - * * Parametros de retorno: * - * */ int main(){ /* Variaveis utilizadas para calcular o tempo de execucao do programa */ time_t begin, end; double time_spent; time(&begin); /* Inicialicazao das variaveis globais utilizadas no algoritmo */ initAttributes(); /* Loop principal que calcula o valor do "pi" */ do{ //printf("Iteracao: %ld\n", n_count); calculate_a(); calculate_b(); calculate_t(); calculate_p(); calculate_pi(); filePrint(); n_count++; } while(mpf_cmp(pi[n_count-2], pi[n_count-1])!=0); /* Condicao de parada: o "pi" recem calculado deve ser igual ao seu antecessor, garantindo assim a sua convergencia com 10 milhoes de casas decimais */ time(&end); time_spent = difftime(end, begin); printf("Tempo de execucao: %lf segundos\nIteracoes: %ld\n", time_spent, n_count); return 0; }
bool detect_collision_point(const int aircraft[], const int obstacle[], const int aircraft_vel[], const int obtacle_vel[], int collision_point[], bool *ray){ bool valid_t; int collision_2d[3]; t = calculate_t(aircraft,obstacle,aircraft_vel,obstacle_vel,&valid_t); if ( valid_t == false ){ if ( ray_tracing(aircraft,obstacle,aircraft[3]+obstacle[3],collision_2d) ){ *ray = true; return true; } else { return false; } } else { collision_point[0] = aircraft[0] + aircraft_vel[0]*t; collision_point[1] = aircraft[1] + aircraft_vel[1]*t; collision_point[2] = aircraft[2] + aircraft_vel[2]*t; *ray = false; return true; } }