Graphic Calculator: FIDocalcus
Проект трёх первокурсников (по инженерному практикуму в первом семестре) по созданию графического калькулятора на FLTK C++
Loading...
Searching...
No Matches
Segmented_graphix.h
Go to the documentation of this file.
1#pragma once
2
3// std libs
4#include <functional>
5#include <string>
6
7// Graph_lib
9
10// Graphix_calc
11#include "Graphix.h"
12
13// Backend
14#include "../../backend.h"
15
16namespace Graphix_calc {
17
18/// @brief Фигура, представляющая собой график мат. функции, поделенный на
19// сегменты, связанные с ОДЗ
21 public:
22 Segmented_graphix() = default;
23
24 /**
25 * @brief Инициализирует новый экземпляр Segmented_graphix
26 * @details Деление на сегменты происходит на прямоугольной области краями
27 * которой и являются точки
28 * @param _calc: лямбда-выражение от мат. функции
29 * @param unit_intr: длина ед. отрезка
30 * @param origin: начало координат
31 * @param left_bottom: левая нижняя точка - начало области деления на сегменты
32 * @param right_top: правая верхняя точка - конец области деления на сегменты
33 */
34 Segmented_graphix(std::function<double(double)> _calc, double unit_intr,
35 Graph_lib::Point origin, Graph_lib::Point left_bottom,
36 Graph_lib::Point right_top);
37
39
41
42 // methods
43
45
47 seged_graphix = std::vector<Graphix_calc::Graphix*>{graphix};
48 return *this;
49 }
50
51 // ~methods
52
53 private:
54 // vars
55
56 /// @brief Лямбда-выражение от мат. функции
57 std::function<double(double)> calc;
58
59 /// @brief Вещественные отрезки, где мат. функция определена
60 std::vector<Math_calc::Segment> segs;
61
62 /// @brief График мат. функции, поделенный на сегменты, связанные с ОДЗ
63 std::vector<Graphix_calc::Graphix*> seged_graphix;
64
65 // ~vars
66
67 // methods
68
69 void draw_lines() const override;
70
71 /**
72 * @param unit_intr: длина ед. отрезка,
73 * @param origin: начало координат
74 * @param left_bottom: левая нижняя точка - начало области деления на сегменты
75 * @param right_top: правая верхняя точка - конец области деления на сегменты
76 * @return std::vector<Math_calc::Segment>: вещественные отрезки, где мат.
77 * функция определена
78 */
79 std::vector<Math_calc::Segment> segments(double unit_intr,
80 Graph_lib::Point origin,
81 Graph_lib::Point left_bottom,
82 Graph_lib::Point right_top) const;
83
84 /**
85 * @return std::vector<Graphix_calc::Graphix*>: график мат. функции,
86 * поделенный на сегменты, связанные с ОДЗ
87 * @param unit_intr: длина ед. отрезка
88 * @param origin: начало координат
89 * @param left_bottom: левая нижняя точка - начало области деления на сегменты
90 * @param right_top: правая верхняя точка - конец области деления на сегменты
91 */
92 std::vector<Graphix_calc::Graphix*> segmented_graphix(
93 double unit_intr, Graph_lib::Point origin, Graph_lib::Point left_bottom,
94 Graph_lib::Point right_top) const;
95
96 // ~methods
97};
98
99} // namespace Graphix_calc
Абстрактная фигура
Definition Shapes.h:154
Color c
Definition Shapes.h:213
Фигура, представляющая собой график мат. функции
Definition Graphix.h:13
Фигура, представляющая собой график мат. функции, поделенный на
Definition Segmented_graphix.h:20
std::function< double(double)> calc
Лямбда-выражение от мат. функции
Definition Segmented_graphix.h:57
std::vector< Graphix_calc::Graphix * > seged_graphix
График мат. функции, поделенный на сегменты, связанные с ОДЗ
Definition Segmented_graphix.h:63
~Segmented_graphix()
Definition Segmented_graphix.cpp:36
void draw_lines() const override
Definition Segmented_graphix.cpp:40
void set_color(Graph_lib::Color c)
Definition Segmented_graphix.cpp:45
std::vector< Math_calc::Segment > segments(double unit_intr, Graph_lib::Point origin, Graph_lib::Point left_bottom, Graph_lib::Point right_top) const
Definition Segmented_graphix.cpp:50
Segmented_graphix & operator=(Graphix_calc::Graphix *graphix)
Definition Segmented_graphix.h:46
std::vector< Graphix_calc::Graphix * > segmented_graphix(double unit_intr, Graph_lib::Point origin, Graph_lib::Point left_bottom, Graph_lib::Point right_top) const
Definition Segmented_graphix.cpp:69
std::vector< Math_calc::Segment > segs
Вещественные отрезки, где мат. функция определена
Definition Segmented_graphix.h:60
Definition Axis.cpp:17
Цвет, с учетом прозрачности
Definition Shapes.h:23
Definition Point.h:7