-
Notifications
You must be signed in to change notification settings - Fork 0
/
main.cpp
94 lines (70 loc) · 3.38 KB
/
main.cpp
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
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
// SPDX-License-Identifier: BSD-3-Clause
// Copyright (c) 2018-2020 Dmitry Kozlyuk
#include "plant.h"
#include <discpp.h>
#include <cmath>
#include <vector>
using namespace std;
int
main(int argc, char* argv[]) {
// Инициализация ОУ.
Plant plant;
plant_init(plant);
// Получение экспериментальных данных.
const int channel = 64;
const size_t steps = 100;
vector<double> xs(steps);
vector<double> ys(steps);
for (size_t i = 0; i < steps; i++) {
xs[i] = i;
ys[i] = plant_measure(channel, plant);
}
// Объект для рисования графика.
Dislin g;
// Формат вывода, "cons" означает вывод на экран.
g.metafl("cons");
// Включает режим светлого фона (по умолчанию наоборот).
g.scrmod("revers");
// Инициализирует библиотеку, должно быть раньше других вызовов рисования.
g.disini();
// Задает подписи осей.
g.name("Measurement no.", "x");
g.name("Value", "y");
// Количество цифр после запятой по оси абсцисс: нет, только целая часть.
g.labdig(-1, "x");
// Количество промежуточных меток (между числами) на осях.
g.ticks(10, "x");
g.ticks(10, "y");
// Задает заголовок графика.
g.titlin("Plant parameter plot", 1);
// Определяет цвет как смесь красного, зеленого и синего от 0 до 1 (RGB).
// Здесь: все компоненты равны и близки к 1, т. е. цвет светло-серый.
const int background_color = g.intrgb(0.95, 0.95, 0.95);
// Использует ране определенный цвет для заливки фона.
g.axsbgd(background_color);
// Задает координатную сетку.
g.graf(
// Область значений по оси абсцисс (X).
0, steps,
// Наименьшее значение на оси абсцисс и следующее за ним.
0, steps / 10,
// Область значений по оси ординат (Y).
50.0, 65.0,
// Наименьшее значение на оси ординат и следующее за ним.
50.0, 1.0);
// Задает светло-серый цвет для следующего вызова.
g.setrgb(0.7, 0.7, 0.7);
// Рисует сетку с заданными шагами по осям.
g.grid(1, 1);
// Задает цвет для следующего вызова из числа стандартных.
// Здесь: основной цвет, контрастный с фоном (черный для белого фона).
g.color("fore");
// Рисует заголовок.
g.title();
// Рисует данных.
g.color("red");
g.curve(&xs[0], &ys[0], steps);
// Завершает работу библиотеки, должно быть после всех вызовов рисования.
g.disfin();
return 0;
}