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
lib::Hill Class Reference

Рельеф с высотой More...

#include <hill.h>

Inheritance diagram for lib::Hill:
Collaboration diagram for lib::Hill:

Public Member Functions

 Hill ()=default
 
 Hill (const Hill &)=default
 
 Hill (const std::vector< Point > &points)
 Инициализирует новый экземпляр Hill (так как рельеф является многоугольником, его можно построить по точкам)
 
 Hill (Hill &&)=default
 
void AddVertice (Point vertice)
 
virtual unsigned short GetId () const
 Возвращает значение ид. объекта внутри файла
 
QJsonObject GetJsonInfo () const override
 
std::vector< Point > & GetVertices ()
 
const std::vector< Point > & GetVertices () const
 
bool IsChanged (const QJsonObject &hill_obj) const override
 
Hilloperator= (const Hill &)=default
 
Hilloperator= (Hill &&)=default
 
bool operator== (const Hill &) const
 
virtual void SetId (unsigned short id)
 Устанавливает значение ид. объекта внутри файла
 
void SetJsonInfo (const QJsonObject &hill_obj) override
 

Private Member Functions

void CheckErrorValues () const override
 Проверяет данные в классе на валидность
 

Private Attributes

unsigned short id_ {USHRT_MAX}
 Идентификатор объекта внутри файла
 
std::vector< Pointvertices_
 

Detailed Description

Рельеф с высотой

Constructor & Destructor Documentation

◆ Hill() [1/4]

lib::Hill::Hill ( )
default

◆ Hill() [2/4]

lib::Hill::Hill ( const std::vector< Point > & points)
inline

Инициализирует новый экземпляр Hill (так как рельеф является многоугольником, его можно построить по точкам)

Parameters
pointsсписок точек
22 : vertices_{points} {
24 }
void CheckErrorValues() const override
Проверяет данные в классе на валидность
Definition hill.cpp:70
std::vector< Point > vertices_
Definition hill.h:52
Here is the call graph for this function:

◆ Hill() [3/4]

lib::Hill::Hill ( const Hill & )
default

◆ Hill() [4/4]

lib::Hill::Hill ( Hill && )
default

Member Function Documentation

◆ AddVertice()

void lib::Hill::AddVertice ( Point vertice)
inline
40{ vertices_.push_back(vertice); }
Here is the caller graph for this function:

◆ CheckErrorValues()

void lib::Hill::CheckErrorValues ( ) const
overrideprivatevirtual

Проверяет данные в классе на валидность

Exceptions
std::invalid_argumentесли одна из коорд. вершин превышает максимально допустимое значение

Implements lib::JSONable.

70 {
71 for (const auto& vert : vertices_)
72 if (vert.x > max_coord || vert.y > max_coord)
73 throw std::invalid_argument("Exceeding the maximum permissible values!");
74}
constexpr double max_coord
Definition base.h:12
Here is the caller graph for this function:

◆ GetId()

virtual unsigned short lib::JSONable::GetId ( ) const
inlinevirtualinherited

Возвращает значение ид. объекта внутри файла

Returns
unsigned short: идентификатор объекта внутри файла
26{ return id_; }
unsigned short id_
Идентификатор объекта внутри файла
Definition base.h:40
Here is the caller graph for this function:

◆ GetJsonInfo()

QJsonObject lib::Hill::GetJsonInfo ( ) const
overridevirtual

Implements lib::JSONable.

9 {
10 QVariantMap hill_map;
11 hill_map.insert("Id", GetId());
12
13 QJsonArray vertices_array;
14 for (size_t i = 0; i < vertices_.size(); i++) {
15 QJsonObject v_obj;
16 v_obj.insert("X", vertices_[i].x);
17 v_obj.insert("Y", vertices_[i].y);
18 vertices_array.append(v_obj);
19 }
20 hill_map.insert("Vertices", vertices_array);
21
22 return QJsonObject::fromVariantMap(hill_map);
23}
virtual unsigned short GetId() const
Возвращает значение ид. объекта внутри файла
Definition base.h:26
Here is the call graph for this function:

◆ GetVertices() [1/2]

std::vector< Point > & lib::Hill::GetVertices ( )
inline
38{ return vertices_; }

◆ GetVertices() [2/2]

const std::vector< Point > & lib::Hill::GetVertices ( ) const
inline
37{ return vertices_; }
Here is the caller graph for this function:

◆ IsChanged()

bool lib::Hill::IsChanged ( const QJsonObject & hill_obj) const
overridevirtual

Implements lib::JSONable.

51 {
52 QJsonArray json_vertices = hill_obj.value("Vertices").toArray();
53 for (size_t i = 0; i < vertices_.size() - 1; i++) {
54 QJsonObject v_obj = json_vertices[i].toObject();
55 lib::Point p = {v_obj.value("X").toDouble(), v_obj.value("Y").toDouble()};
56 if (p != vertices_[i]) return true;
57 }
58 return false;
59}
Математическая точка
Definition point.h:16
Here is the caller graph for this function:

◆ operator=() [1/2]

Hill & lib::Hill::operator= ( const Hill & )
default

◆ operator=() [2/2]

Hill & lib::Hill::operator= ( Hill && )
default

◆ operator==()

bool lib::Hill::operator== ( const Hill & hill) const
61 {
62 if (vertices_.size() != hill.GetVertices().size()) return false;
63
64 for (size_t i = 0; i < vertices_.size(); i++)
65 if (vertices_[i] != hill.GetVertices()[i]) return false;
66
67 return true;
68}
Here is the call graph for this function:

◆ SetId()

virtual void lib::JSONable::SetId ( unsigned short id)
inlinevirtualinherited

Устанавливает значение ид. объекта внутри файла

Parameters
idновый идентификатор объекта
32{ id_ = id; }
Here is the caller graph for this function:

◆ SetJsonInfo()

void lib::Hill::SetJsonInfo ( const QJsonObject & hill_obj)
overridevirtual

Implements lib::JSONable.

25 {
26 if (!(hill_obj.contains("Vertices") && hill_obj.contains("Id")))
27 throw std::invalid_argument(
28 "Invalid file format: missing Vertices or Id field in Hills!");
29
30 QJsonArray vertices_array = hill_obj.value("Vertices").toArray();
31 for (size_t i = 0; i < static_cast<size_t>(vertices_array.size()); i++) {
32 lib::Point vertice;
33 QJsonObject v_obj = vertices_array[i].toObject();
34 if (!(v_obj.contains("X") && v_obj.contains("Y")))
35 throw std::invalid_argument(
36 "Invalid file format: missing X or Y field in Hills!");
37
38 vertice.x = v_obj.value("X").toDouble();
39 vertice.y = v_obj.value("Y").toDouble();
40 vertices_.push_back(vertice);
41 }
42
43 unsigned short id = static_cast<unsigned short>(hill_obj.value("Id").toInt());
44 if (id < 40000 || id > 49999)
45 throw std::invalid_argument("Invalid file format: incorrect id in 'Hill'!");
46 SetId(id);
47
49}
virtual void SetId(unsigned short id)
Устанавливает значение ид. объекта внутри файла
Definition base.h:32
double y
Definition point.h:18
double x
Definition point.h:17
Here is the call graph for this function:
Here is the caller graph for this function:

Member Data Documentation

◆ id_

unsigned short lib::JSONable::id_ {USHRT_MAX}
privateinherited

Идентификатор объекта внутри файла

40{USHRT_MAX};

◆ vertices_

std::vector<Point> lib::Hill::vertices_
private

The documentation for this class was generated from the following files: