Общие требования: Язык: С++ Использование ООП, STL и особенностей языка приветствуется.
Задача 1 Условие: Есть два манипулятора. Их инструменты находятся в точках О1 и О2 в декартовой системе координат (X, Y). У каждого манипулятора есть свой радиус эффективного действия R1 и R2. Есть целевая точка P1. Задача: Определите, каким манипулятором оптимальнее дойти до точки P1. Если оба манипулятора не могут достать, то вывести сообщение: “OUT OF RANGE”. Если точка доступна одному манипулятору – использовать его.
Задача 2 Условие: Движение манипуляторов это, конечно, хорошо, но обычно с помощью кода они двигаются по определенным координатам, для сборки того или иного компонента. Даны два манипулятора, которые описываются стартовыми центрами O1 и O2 и радиусом их действия R1 и R2 в декартовой системе координат. Радиус действия не изменяется в течении работы программы. Также дан массив точек, где лежат детали P1…Pn. Задача: Выведете две строки: какие точки обойдет каждый манипулятор. Замечание: Важно помнить, что до детали должен дойти “оптимальный” манипулятор на текущей итерации процесса. Оптимальность можно считать по длине пути до точки. Радиус не учитывается. Пример ниже. Пример: Есть массив точек: {1, 3}, {2, 1.41}, {0.2, -7} ,{-5, -1} , {0, 9} Манипуляторы на старте: M1: ({0, 0} , 4) M2: ({2, 1}, 3)
Задача 3 Условие: Есть GCODE Данного формата X(value);Y(value);Z(value). Он используется для передачи команд микроконтроллеру, который в свою очередь управляет устройством, например манипулятором. Подробнее про GCODE можно прочитать тут. Обычно GCODE выполняется построчно, поэтому если в скрипте оказалась ошибка, то только на ошибочной строке он остановится. Входные данные: GCODE Задача: Выведете конечные координаты устройства после выполнения комманд GCODE. P.S. При написании кода обратите внимание на различные форматы GCODE команд.