summaryrefslogtreecommitdiff
path: root/graphs/cpp/cartesian_vector/vector.hh
blob: b18838c0d98dd53c01885ae2cb603b3d547bc197 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
#pragma once
#include <iostream>

#include "format_numerical_data.hh"

class Vector
{
public:
    Vector() = default;
    Vector(double x, double y);
    double get_x() const;
    double get_y() const;

    Vector& operator+=(const Vector& rhs);
    Vector& operator-=(const Vector& rhs);
    Vector& operator*=(double scalar);

    friend Vector operator+(const Vector& lhs, const Vector& rhs);
    friend Vector operator-(const Vector& lhs, const Vector& rhs);
    friend Vector operator*(const Vector& lhs, double scalar);
    friend Vector operator*(double scalar, const Vector& rhs);
    friend double operator*(const Vector& lhs, const Vector& rhs);
    friend std::ostream& operator<<(std::ostream& os, const Vector& vec);

private:
    double x_ = 0;
    double y_ = 0;
    static FormatNumericalData format_numerical_data_;
};