Locus No Pilotus
Project of four first grade MIPT DAFE/RSE students (for engineering practical work in the second semester) in Qt C++
Loading...
Searching...
No Matches
hill.h
Go to the documentation of this file.
1#pragma once
2
3// std libs:
4#include <initializer_list>
5#include <vector>
6
7// our code libs:
8#include "base.h"
9
10namespace lib {
11
12/// @brief Рельеф с высотой
13class Hill : public JSONable {
14 public:
15 Hill() = default;
16
17 /**
18 * @brief Инициализирует новый экземпляр Hill
19 * (так как рельеф является многоугольником, его можно построить по точкам)
20 * @param points: список точек
21 */
22 Hill(const std::vector<Point>& points) : vertices_{points} {
24 }
25
26 Hill(const Hill&) = default;
27 Hill(Hill&&) = default;
28
29 Hill& operator=(const Hill&) = default;
30 Hill& operator=(Hill&&) = default;
31
32 QJsonObject GetJsonInfo() const override;
33 void SetJsonInfo(const QJsonObject& hill_obj) override;
34
35 bool IsChanged(const QJsonObject& hill_obj) const override;
36
37 const std::vector<Point>& GetVertices() const { return vertices_; }
38 std::vector<Point>& GetVertices() { return vertices_; }
39
40 void AddVertice(Point vertice) { vertices_.push_back(vertice); }
41
42 bool operator==(const Hill&) const;
43
44 private:
45 /**
46 * @brief Проверяет данные в классе на валидность
47 * @throw std::invalid_argument: если одна из коорд. вершин превышает
48 * максимально допустимое значение
49 */
50 void CheckErrorValues() const override;
51
52 std::vector<Point> vertices_;
53};
54
55} // namespace lib
Рельеф с высотой
Definition hill.h:13
Hill()=default
bool operator==(const Hill &) const
Definition hill.cpp:61
void AddVertice(Point vertice)
Definition hill.h:40
Hill(const std::vector< Point > &points)
Инициализирует новый экземпляр Hill (так как рельеф является многоугольником, его можно построить по ...
Definition hill.h:22
void SetJsonInfo(const QJsonObject &hill_obj) override
Definition hill.cpp:25
void CheckErrorValues() const override
Проверяет данные в классе на валидность
Definition hill.cpp:70
std::vector< Point > vertices_
Definition hill.h:52
QJsonObject GetJsonInfo() const override
Definition hill.cpp:9
Hill(const Hill &)=default
Hill(Hill &&)=default
const std::vector< Point > & GetVertices() const
Definition hill.h:37
Hill & operator=(const Hill &)=default
Hill & operator=(Hill &&)=default
bool IsChanged(const QJsonObject &hill_obj) const override
Definition hill.cpp:51
std::vector< Point > & GetVertices()
Definition hill.h:38
Объект, возможный к считыванию по .json файлу [абстрактный класс].
Definition base.h:15
Definition base.h:10
Математическая точка
Definition point.h:16