public void Calculation(int n) { if (!isInitialise) { init_vars(); } PlanPositionParameters res_position = new PlanPositionParameters(); PlanVelositiesParameters res_velocity; PlanAccelerationsParameters res_acceleration; PlanForcesParameters res_forces; CalculationPlanPosition(ref res_position, n); if (calculation_mode > CalculationModes.CalcOnlyPlanePosition) { res_velocity = new PlanVelositiesParameters(); CalculationVelocities(ref res_position, ref res_velocity); } if (calculation_mode > CalculationModes.CalcVelocities) { res_acceleration = new PlanAccelerationsParameters(); CalculationAcceleration(ref res_acceleration); } if (calculation_mode > CalculationModes.CalcAcceleration) { res_forces = new PlanForcesParameters(); CalculationForces(ref res_position, ref res_forces); } }
public void CalculationAcceleration(ref PlanAccelerationsParameters res) { res.a_n2n = omega * omega * l2; res.a_tau2n = epsilon * l2; res.beta_2nn = fi_2n + Math.PI; res.beta_tau2n = fi_2n - epsilonDirect * Math.PI / 2; res.X_Ban = res.a_n2n * Math.Cos(res.beta_2nn) + res.a_tau2n * Math.Cos(res.beta_tau2n); res.Y_Ban = res.a_n2n * Math.Sin(res.beta_2nn) + res.a_tau2n * Math.Sin(res.beta_tau2n); OperatorFunction.F4(X_pi, Y_pi, res.X_Ban, res.Y_Ban, ref a_Bn); OperatorFunction.F3(X_pi, Y_pi, res.X_Ban, res.Y_Ban, a_Bn, ref res.beta_2nn); res.a_n3n = omega_3n * omega_3n * l3; res.beta_3nn = fi_3n + Math.PI; OperatorFunction.F2(res.X_Ban, res.Y_Ban, res.a_n3n, res.beta_3nn, ref res.X_CB3n, ref res.Y_CB3n); res.a_n4n = omega_4n * omega_4n * l4; res.beta_4nn = fi_4n + Math.PI; OperatorFunction.F2(X_pi, Y_pi, res.a_n4n, res.beta_4nn, ref res.X_CB4n, ref res.Y_CB4n); OperatorFunction.F1(res.X_CB3n, res.Y_CB3n, fi_3n + Math.PI / 2, res.X_CB4n, res.Y_CB4n, fi_4n + Math.PI / 2, ref res.X_Can, ref res.Y_Can); OperatorFunction.F4(X_pi, Y_pi, res.X_Can, res.Y_Can, ref a_Cn); OperatorFunction.F4(res.X_Ban, res.Y_Ban, res.X_Can, res.Y_Can, ref a_CBn); OperatorFunction.F5(X_pi, Y_pi, res.X_Ban, res.Y_Ban, l_AS_2, l2 - l_AS_2, 1, ref res.X_S2an, ref res.Y_S2an); OperatorFunction.F4(X_pi, Y_pi, res.X_S2an, res.Y_S2an, ref a_S2n); beta_S2n = beta_2n; //Визначаємо прискорення точки S4 OperatorFunction.F5(res.X_Ban, res.Y_Ban, res.X_Can, res.Y_Can, l_BS_3, l3 - l_BS_3, 1, ref res.X_S3an, ref res.Y_S3an); OperatorFunction.F4(X_pi, Y_pi, res.X_S3an, res.Y_S3an, ref a_S3n); OperatorFunction.F3(X_pi, Y_pi, res.X_S3an, res.Y_S3an, a_S3n, ref beta_S3n); //Визначаємо прискорення точки S4 OperatorFunction.F5(X_pi, Y_pi, res.X_Ban, res.Y_Ban, l_DS_4, l4 - l_DS_4, 1, ref res.X_S4an, ref res.Y_S4an); OperatorFunction.F4(X_pi, Y_pi, res.X_S4an, res.Y_S4an, ref a_S4n); OperatorFunction.F3(X_pi, Y_pi, res.X_S4an, res.Y_S4an, a_S4n, ref beta_S4n); //Визначаємо кутове прискорення ланки 3 OperatorFunction.F4(res.X_CB3n, res.Y_CB3n, res.X_Can, res.Y_Can, ref res.a_tau3n); OperatorFunction.F3(res.X_CB3n, res.Y_CB3n, res.X_Can, res.Y_Can, res.a_tau3n, ref res.beta_tau3n); OperatorFunction.F7(res.a_tau3n, l3, res.beta_tau3n, fi_3n, ref epsilon_3n); //Визначаємо кутове прискорення ланки 4 OperatorFunction.F4(res.X_CB4n, res.Y_CB4n, res.X_Can, res.Y_Can, ref res.a_tau4n); OperatorFunction.F3(res.X_CB4n, res.Y_CB4n, res.X_Can, res.Y_Can, res.a_tau4n, ref res.beta_tau4n); OperatorFunction.F7(res.a_tau4n, l4, res.beta_tau4n, fi_4n, ref epsilon_4n); //Визначаємо прискорення точки Е if (isAdditionalPoint) { if (point_0 == NumberPoints.B) { OperatorFunction.F5(res.X_Can, res.Y_Can, res.X_Ban, res.Y_Ban, l5 + l3, l3, -1, ref res.X_Ean, ref res.Y_Ean); OperatorFunction.F4(X_pi, Y_pi, res.X_Ean, res.Y_Ean, ref a_Ean); OperatorFunction.F3(X_pi, Y_pi, res.X_Ean, res.Y_Ean, a_Ean, ref beta_Ean); } else if (point_0 == NumberPoints.C) { OperatorFunction.F5(res.X_Ban, res.Y_Ban, res.X_Can, res.Y_Can, l5 + l3, l3, -1, ref res.X_Ean, ref res.Y_Ean); OperatorFunction.F4(X_pi, Y_pi, res.X_Ean, res.Y_Ean, ref a_Ean); OperatorFunction.F3(X_pi, Y_pi, res.X_Ean, res.Y_Ean, a_Ean, ref beta_Ean); } } }