コード例 #1
0
        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);
            }
        }
コード例 #2
0
ファイル: AnalysMechanism.cs プロジェクト: sergeysolod17/.NET
 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);
         }
     }
 }