#pragma once

#include <memory>
#include <cmath>

class Point
{
public:

    Point(double x, double y);

    ~Point();

    static std::shared_ptr<Point> Create(double x, double y);

    double getX() const;

    double getY() const;

    double getDistance(const Point& point) const;

    double getDistance(Point* point) const;

    double getDeltaX(const Point& point) const;

    double getDeltaY(const Point& point) const;

private:
    double mX{0};
    double mY{0};
    double mZ{0};
};

using PointPtr = std::shared_ptr<Point>;
