public class GearCalculations {
public static void main(String[] args) {
double inv = 0.014904; // Example: inv(20°)
double alpha = invAngle(inv);
[Link]("Computed angle (radians): " + alpha);
[Link]("Computed angle (degrees): " + [Link](alpha));
}
/**
* Computes the inverse involute function (angle from involute value).
* @param inv - Involute value (inv = tan(α) - α)
* @return Pressure angle α in radians
*/
public static double invAngle(double inv) {
final double PI = [Link];
final double TOLERANCE = 1e-8; // Convergence tolerance
double angleLow = 0.0; // Lower bound (0 radians)
double angleHigh = PI / 2; // Upper bound (π/2 radians)
double angleMid = 0.0;
double invDiff;
do {
angleMid = (angleLow + angleHigh) / 2;
invDiff = [Link](angleMid) - angleMid - inv;
if (invDiff > 0) {
angleHigh = angleMid; // Adjust upper bound
} else {
angleLow = angleMid; // Adjust lower bound
}
} while ([Link](invDiff) > TOLERANCE);
return angleMid;
}
}