public OutputData GetResult()
        {
            var res = new OutputData {
                tf = tf, S = S
            };

            if (t2 < 0)
            {
                res.Info = "Не успеет остановиться";
            }
            for (double t = 0; t < tf; t += DeltaT)
            {
                var f1 = engine1.GetForce(t);
                var f2 = engine2.GetForce(t);
                var f3 = engine3.GetForce(t);
                var f4 = engine4.GetForce(t);

                res.F1Max = Math.Max(res.F1Max, f1);
                res.F2Max = Math.Max(res.F2Max, f2);
                res.F3Max = Math.Max(res.F3Max, f3);
                res.F4Max = Math.Max(res.F4Max, f4);

                res.F1Min = Math.Min(res.F1Min, f1);
                res.F2Min = Math.Min(res.F2Min, f2);
                res.F3Min = Math.Min(res.F3Min, f3);
                res.F4Min = Math.Min(res.F4Min, f4);

                res.P1Max = Math.Max(res.P1Max, Math.Abs(engine1.GetPower(t)));
                res.P2Max = Math.Max(res.P2Max, Math.Abs(engine2.GetPower(t)));
                res.P3Max = Math.Max(res.P3Max, Math.Abs(engine3.GetPower(t)));
                res.P4Max = Math.Max(res.P4Max, Math.Abs(engine4.GetPower(t)));
            }
            res.PSum = res.P1Max + res.P2Max + res.P3Max + res.P4Max;
            return(res);
        }
        protected override double GetForceForCurrent(double t)
        {
            var f1  = engine1.GetForce(t);
            var f2  = engine2.GetForce(t);
            var a   = vars.R * cables.CosA + vars.N * cables.CosB + cables.CosD;
            var d   = vars.R * vars.I - vars.N * vars.J + vars.L;
            var e   = vars.P * vars.I - vars.M * vars.J + vars.K;
            var f   = vars.P * cables.CosA + vars.M * cables.CosB + cables.CosD;
            var dif = a * e - f * d;

            if (Math.Abs(dif) <= 0.0001)
            {
                return(inputdata.k * inputdata.M * g / 4 * cables.CosB - inputdata.Fn);
            }
            return(-inputdata.Fn + inputdata.k * f1 * vars.M + inputdata.k * f2 * vars.N - inputdata.k * vars.M * vars.O);
        }