渐开线函数
计算公式: invα = tanα - α (α为弧度值)
public double WheelInv(double input)//input单位为°
{
double Mate = Math.Tan(input * Math.PI / 180) - input * Math.PI / 180;
return Mate;
}
反解渐开线函数
探求法(黄金分割法优化)
public double WheelArcinv(double input)//input单位为°
{
double OP2, R1 = 0, R2 = 90, Mate, PN;
Mate = (R2 - R1) * 0.6180339887498 + R1;
for (int I = 0; I < 1000; I++)
{
OP2 = Math.Tan(Mate * Math.PI / 180) - Mate * Math.PI / 180;
PN = OP2 - input;
if (PN > 0)
{
R2 = Mate;
Mate = (R2 - R1) * 0.3819660112502 + R1;
}
else
{
R1 = Mate;
Mate = (R2 - R1) * 0.6180339887498 + R1;
}
}
return Mate;
}