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); } } ; }
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); }