/// <summary> /// Проверяет пару углов на соответствие конструктивным параметрам робота. /// </summary> /// <param name="dp">Конструктивные параметры робота</param> /// <param name="angles">Структура. Пара углов φ1 и φ2</param> /// <returns>Истина, если пара углов соответствует конструктивным параметрам робота</returns> public static bool IsAnglesAreValid(DesignParameters dp, AnglesOfRotation angles) { var phi1 = Round(angles.Phi1); var phi2 = Round(angles.Phi2); return((phi1 >= Round(dp.Lever1.PhiMin) && phi1 <= Round(dp.Lever1.PhiMax)) && (phi2 >= Round(dp.Lever2.PhiMin) && phi2 <= Round(dp.Lever2.PhiMax))); }
/// <summary> /// Возвращает истину, если пара углов angles - верна. /// </summary> /// <param name="angles">Структура. Пара углов φ1 и φ2</param> /// <param name="x">Координата х центра схвата в базовой системе координат</param> /// <param name="y">Координата y центра схвата в базовой системе координат</param> /// <returns>Истина, если пара углов angles - верна</returns> private bool IsRootsAreValid(AnglesOfRotation angles, double x, double y) { // Переводим углы в радианы. var f1 = angles.Phi1 * deg; var f2 = angles.Phi2 * deg; // Значения х и у для данной пары углов. double x0 = (dp.L2 * Math.Cos(f2)) + (dp.L1 * Math.Cos(f1)); double y0 = dp.Lc + (dp.L2 * Math.Sin(f2)) + (dp.L1 * Math.Sin(f1)); // Проверка полученных значений с исходными (с точностью до тысячных). return(Round(x) == Round(x0) && Round(y) == Round(y0)); }