示例#1
0
        public static void CalculationPlanPosition(ref MechanismAnalys res, int n)
        {
            double L_BDn   = new double();
            double Fi_BDn  = new double();
            double delta_n = new double();

            res.fi_2n = Fi_10 + n * 2 * Math.PI / quantIteration;                          //значення узагальненої координати
            OperatorFunction.F2(X_A, Y_A, l2, res.fi_2n, ref res.X_Bn, ref res.Y_Bn);      //знаходимо координати точки В
            OperatorFunction.F4(res.X_Bn, res.Y_Bn, _X_D, _Y_D, ref L_BDn);                //знаходимо довжину відрізка ВD
            OperatorFunction.F3(res.X_Bn, res.Y_Bn, _X_D, _Y_D, L_BDn, ref Fi_BDn);        //знаходимо кут BDn
            delta_n   = Math.Acos((l3 * l3 + L_BDn * L_BDn - l4 * l4) / (2 * l3 * L_BDn)); //
            res.fi_3n = delta_n + Fi_BDn;
            OperatorFunction.F2(res.X_Bn, res.Y_Bn, l3, res.fi_3n, ref res.X_Cn, ref res.Y_Cn);
            OperatorFunction.F3(res.X_Cn, res.Y_Cn, _X_D, _Y_D, l4, ref res.fi_4n);
            OperatorFunction.F5(X_A, Y_A, res.X_Bn, res.Y_Bn, l_AS_2, l2 - l_AS_2, 1, ref res.X_S2n, ref res.Y_S2n);
            OperatorFunction.F5(res.X_Bn, res.Y_Bn, res.X_Cn, res.Y_Cn, l_BS_3, l3 - l_BS_3, 1, ref res.X_S3n, ref res.Y_S3n);
            OperatorFunction.F5(_X_D, _Y_D, res.X_Cn, res.Y_Cn, l_DS_4, l4 - l_DS_4, 1, ref res.X_S4n, ref res.Y_S4n);

            if (isAdditionalPoint)
            {
                if (point_0 == NumberPoints.B)
                {
                    OperatorFunction.F2(res.X_Bn, res.Y_Bn, l5, res.fi_3n, ref res.X_En, ref res.Y_En);
                }
                else if (point_0 == NumberPoints.C)
                {
                    OperatorFunction.F2(res.X_Cn, res.Y_Cn, l5, res.fi_3n + Math.PI, ref res.X_En, ref res.Y_En);
                }
            }
            ;
        }
示例#2
0
        public static void CalculationPlanVelocity(ref MechanismAnalys res)
        {
            double x_BVn  = new double();
            double y_BVn  = new double();
            double x_CVn  = new double();
            double y_CVn  = new double();
            double v_CBn  = new double();
            double X_S2Vn = new double();
            double Y_S2Vn = new double();
            double X_S3Vn = new double();
            double Y_S3Vn = new double();
            double X_S4Vn = new double();
            double Y_S4Vn = new double();

            res.alpha_2n = res.fi_2n + omegaDirect * Math.PI / 2;
            OperatorFunction.F2(X_P, Y_P, MechanismAnalys.v_B, res.alpha_2n, ref x_BVn, ref y_BVn);
            OperatorFunction.F1(x_BVn, y_BVn, res.fi_3n + Math.PI / 2, X_P, Y_P, res.fi_4n + Math.PI / 2, ref x_CVn, ref y_CVn);
            OperatorFunction.F4(X_P, Y_P, x_CVn, y_CVn, ref res.v_Cn);
            OperatorFunction.F4(x_BVn, y_BVn, x_CVn, y_CVn, ref v_CBn);
            OperatorFunction.F3(x_BVn, y_BVn, x_CVn, y_CVn, v_CBn, ref res.alpha_3n);
            OperatorFunction.F3(X_P, Y_P, x_CVn, y_CVn, res.v_Cn, ref res.alpha_4n);
            //Кутові швидкості ланок 3 і 4
            OperatorFunction.F6(v_CBn, l3, res.alpha_3n, res.fi_3n, ref res.omega_3n);
            OperatorFunction.F6(res.v_Cn, l4, res.alpha_4n, res.fi_4n, ref res.omega_4n);
            //Визначаємо швидкість точки S2
            OperatorFunction.F5(X_P, Y_P, x_BVn, y_BVn, l_AS_2, l2 - l_AS_2, 1, ref X_S2Vn, ref Y_S2Vn);
            OperatorFunction.F4(X_P, Y_P, X_S2Vn, Y_S2Vn, ref res.v_S2n);
            OperatorFunction.F3(X_P, Y_P, X_S2Vn, res.Y_S2n, res.v_S2n, ref res.alpha_S2n);
            //Визначаємо швидкість точки S3
            OperatorFunction.F5(x_BVn, y_BVn, x_CVn, y_CVn, l_BS_3, l3 - l_BS_3, 1, ref X_S3Vn, ref Y_S3Vn);
            OperatorFunction.F4(X_P, Y_P, X_S3Vn, Y_S3Vn, ref res.v_S3n);
            OperatorFunction.F3(X_P, Y_P, X_S3Vn, Y_S3Vn, res.v_S3n, ref res.alpha_S3n);
            //Визначаємо швидкість точки S4
            OperatorFunction.F5(X_P, Y_P, x_CVn, y_CVn, l_DS_4, l4 - l_DS_4, 1, ref X_S4Vn, ref Y_S4Vn);
            OperatorFunction.F4(X_P, Y_P, X_S4Vn, Y_S4Vn, ref res.v_S4n);
            OperatorFunction.F3(X_P, Y_P, X_S4Vn, Y_S4Vn, res.v_S4n, ref res.alpha_S4n);
        }