Тема: Допоможіть завершити код!
Написати програму алгоритмічною мовою С++. Реалізувати заданий класовий тип із заданими методами, використовуючи механізм перевантаження функцій та операцій, а також значення параметрів за замовчуванням. Написати фрагмент програми з використанням класового типу та заданих методів.
Задано трикутник в просторі [p1;p2;p3]
Конструктор повинен визначати довільний або рівносторонній трикутник в центрі координат. Визначення периметра. Перевантажити операції ==, виводу <<, вводу >>, а також дружню операцію <<= для повороту трикутника на кут α.
Більша частина коду написана не розумію як виконати пункт, перевантажити дружню операцію для повороту трикутника на кут α.
Code:
#ifndef TRIANGLE_H
#define TRIANGLE_H
#include <cmath>
#include <iostream>
using namespace std;
class triangle
{
private:
    struct point {
        float x;
        float z; 
        float y;
    };
    point p1, p2, p3;
    double a, b, c;
    double square;
    double perimetr;
public:
    triangle() { p1.x = p2.x = p3.x = 0; square = 0; }
    //triangle(int A, int B, int C) { p1 = A; p2 = B; p3 = C; double p = (double)(a + b + c) / 2; square = pow((p*(p - a)*(p - b)*(p - c)), 0.5); }
    friend ostream & operator<<(ostream &os, const triangle & triangl) {
        os << "p1 : " << endl;
        os << "x = " << p1.x << endl;
        os << "y = " << p1.y << endl;
        os << "z = " << p1.z << endl;
        os << "p2 : " << endl;
        os << "x = " << p2.x << endl;
        os << "y = " << p2.y << endl;
        os << "z = " << p2.z << endl;
        os << "p1 : " << endl;
        os << "x = " << p3.x << endl;
        os << "y = " << p3.y << endl;
        os << "z = " << p3.z << endl;
        return os;
    }
    friend istream & operator>>(istream &is, triangle & triangl) {
        cout << "Enter p1 : " << endl;
        cout << "Enter x : ";
        is >> p1.x;
        cout << "Enter y : ";
        is >> p1.y;
        cout << "Enter z : ";
        is >> p1.z;
        cout << "Enter p2 : " << endl;
        cout << "Enter x : ";
        is >> p2.x;
        cout << "Enter y : ";
        is >> p2.y;
        cout << "Enter z : ";
        is >> p2.z;
        cout << "Enter p3 : " << endl;
        cout << "Enter x : ";
        is >> p3.x;
        cout << "Enter y : ";
        is >> p3.y;
        cout << "Enter z : ";
        is >> p3.z;
        
        //a = sqrt(p1)
        return is;
    }
    void calculatePerimetr() {
    }
    const bool operator==(const triangle & right) {
        if ()
            return true;
        return false;
    }
    friend triangle & operator<<=(triangle & triangle, const double & alfa) {
    }
};