Exemplo n.º 1
0
        /// <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)));
        }
Exemplo n.º 2
0
        /// <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));
        }