C++Отдам последние баллы:(1) Создайте два класса описывающие эти геометрические объекты: Point и Vector. При этом Point(0. 0, 1. 0, 2. 0) будет точкой в координатном пространстве x = 0. 0, y = 1. 0 и z = 2. 0. А Vector(1. 0, 0. 0, 0. 0) будет вектором, представляющим направление только вдоль положительной оси x длиной 1. 0. Вектор может применятся к точке для перемещения точки на новую позицию. Это делается путем добавления направления вектора к позиции точки. Например, Point(0. 0, 1. 0, 2. 0) + Vector(0. 0, 2. 0, 0. 0) даст точку Point(0. 0, 3. 0, 2. 0). Создайте для этой операции функцию movePointByVector(). Сделайте это всеми из перечисленных способов:a) объявите функцию movePointByVector() отдельно от классов Point и Vector, объекты этих классов предаются как параметры в эту функцию, в результате функция возвращает новый объект класса Point;b) объявите класс Point дружественным классу Vector и реализуйте метод movePointByVector () в классе Point;c) объявите метод Point:: movePointByVector () дружественным классу Vector;d) объявите класс Vector дружественным классу Point и реализуйте метод movePointByVector () в классе Vector;e) объявите метод Vector:: movePointByVector () дружественным классу Point(2) Доработайте программу из 1 задания, заменив функционал метода movePointByVector() перегрузкой операторов сложения и вычитания для соответствующих операндов. Кроме того, перегрузите оператор [] для получения значений координат x, y, z по соответствующему индексу 0,1,2 и символу “x”, “y”, “z”, и операторы ввода и вывода.