internal void Calc_dynamics(int lr, ControlPlane cw, AirPlane ap, Vector3D dv, double k_q, double k_S) { Matrix44 ma = new Matrix44(); Matrix44 mtemp = new Matrix44(); Vector3D vtemp = new Vector3D(); fv.SetVec(0.0D, 0.0D, 0.0D); tv.SetVec(0.0D, 0.0D, 0.0D); ac = AirPlane.Get_point(ac_base, lr).Sub(ap.inp.cg); dvv = ap.pMotion.omega.CrsProd(ac); vd = ap.pMotion.vc.Add(dvv); vd = vd.Add(dv); v = vd.Length(); vd = vd.NmlVec().SclProd(v * k_q); v = vd.Length(); s2_dash = (s2 * k_S); m = (v / ap.atmos.a); q = (0.5D * v * v * ap.atmos.rho); Vector3D kdd = new Vector3D(); Vector3D idd = new Vector3D(); Vector3D jdd = new Vector3D(); if ((cw != null) && (cw.type == 2)) { ma.SetRyMat(cw.delta); mtemp.SetRzMat(cw.lamda_h); ma = ma.MultMat(mtemp); if (lr == 1) { mtemp.SetRxMat(-cw.gamma_h); } else { mtemp.SetRxMat(-cw.gamma_h); } ma = ma.MultMat(mtemp); idd = id.MultMat(ma); kdd = kd.MultMat(ma); } else { idd = new Vector3D(id); jdd = new Vector3D(jd); kdd = new Vector3D(kd); } mtemp.Set3ColVec(idd, jdd, kdd); vdw = vd.MultMat(mtemp); alpha = Jp.Maker1.Sim.Tools.Tool.CalcAlpha(vdw); beta = Jp.Maker1.Sim.Tools.Tool.CalcBeta(vdw); ar = wing.AspectRatio(beta); are = (ar * wing.K_ground_effect(beta, ap.pMotion.wpos.y)); lamda_dash = SweepbackAngle(wing.hv_arrangement, lr, beta); Calc_cla(); delta_cl_flap = 0.0D; delta_cd_flap = 0.0D; delta_cmac_flap = 0.0D; delta_alpha = 0.0D; k_a = 1.0D; if ((cw != null) && ((cw.type == 1) || (cw.type == 1))) { cw.beta_f = Flap.Beta_f(lr, wing.hv_arrangement, cw.lamda_h, beta); cw.delta_dash = Flap.Delta_dash(cw.delta, cw.beta_f); if (Math.Abs(cw.beta_f) < 1.570796326794897D) { delta_alpha = (cw.f_lamda1 * cw.delta_dash); delta_cmac_flap = cw.f_cmac; } else { delta_alpha = (cw.b_lamda1 * cw.delta_dash); delta_cmac_flap = cw.b_cmac; } k_a = Flap.K_cla(cw.delta_dash, cw.cf_c); delta_cl_flap = (k_a * cla * delta_alpha); delta_cmac_flap *= (alpha + delta_alpha - alpha0); } vtemp.SetVec(0.0D, 0.0D, -1.0D); ma.SetRyMat(-alpha); mtemp.SetRzMat(beta); ma = ma.MultMat(mtemp); mtemp.Set3RowVec(idd, jdd, kdd); ma = ma.MultMat(mtemp); lu = vtemp.MultMat(ma); du = vd.SclProd(-1.0D).NmlVec(); alpha += delta_alpha; cla *= k_a; Calc_cl_cd(); l = (q * cl * s2_dash); cdi = (cl * cl / (Math.PI * are * ew)); cd += cdi; cd += delta_cd_flap; d = (q * cd * s2_dash); lf = Dynamics.Force(l, lu); lt = Dynamics.Torque(ac, lf); df = Dynamics.Force(d, du); dt = Dynamics.Torque(ac, df); cmac = cmac0; cmac += delta_cmac_flap; mac = (q * s2_dash * cmac); Vector3D mt_0 = new Vector3D(0.0D, mac, 0.0D); fv = lf.Add(df); tv = lt.Add(dt).Add(mt_0); }