double smp::rrtstar<typeparams> ::diff_angle_unwrap(double alpha1, double alpha2) { double delta; // normalize angles alpha1 and alpha2 alpha1 = set_angle_to_range(alpha1, 0); alpha2 = set_angle_to_range(alpha2, 0); // take difference and unwrap delta = alpha1 - alpha2; if (alpha1 > alpha2) { while (delta > M_PI) { delta -= 2.0 * M_PI; } } else if (alpha2 > alpha1) { while (delta < -M_PI) { delta += 2.0 * M_PI; } } return delta; }
double smp::minimum_time_reachability<typeparams,NUM_DIMENSIONS> ::diff_angle_unwrap(double alpha1, double alpha2) { double delta; // normalize angles alpha1 and alpha2 alpha1 = set_angle_to_range(alpha1, 0); alpha2 = set_angle_to_range(alpha2, 0); // take difference and unwrap delta = alpha1 - alpha2; if (alpha1 > alpha2) { while (delta > M_PI) { delta -= 2.0 * M_PI; } } else if (alpha2 > alpha1) { while (delta < -M_PI) { delta += 2.0 * M_PI; } } return delta; }