#include <iostream>
#include <random>
#include <limits>
class punkt2D
{
private:
float x, y;
public:
char symbol;
void pokaz() const
{
std::cout << symbol << ": (" << x << ", " << y << ")\n";
}
void init(float lo, float up);
void symetria(const punkt2D& p) const;
punkt2D(char s);
punkt2D(float x, float y, char s) : x{ x }, y{ y }, symbol{ s } {}
punkt2D dodaj(const punkt2D& p) const;
};
void punkt2D::init(float lo, float up)
{
std::random_device dev;
std::mt19937 rng(dev());
std::uniform_real_distribution<> dist(lo, up);
x = dist(rng); y = dist(rng);
}
void punkt2D::symetria(const punkt2D& p) const
{
std::cout << symbol << "': (" << 2 * p.x - x << ", " << 2 * p.y - y << ")\n";
}
punkt2D::punkt2D(char s)
{
init(std::numeric_limits<float>::lowest(),std::numeric_limits<float>::max());
}
punkt2D punkt2D::dodaj(const punkt2D& p) const
{
return punkt2D{ x + p.x, y + p.y, 'S' };
}