Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
1 / 1 / 1
Регистрация: 10.05.2013
Сообщений: 17

Реализация DFP/FFT, графики OpenGL

07.09.2016, 21:36. Показов 1089. Ответов 1
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте, ув. формумчане, хотел бы поинтересоваться у грамотных людей на счет реализации ДПФ и, как следствия, БПФ на языке C++. Как-то, к сожалению, тяжело доходит до меня решение данной задачи. Имеется класс для построения графиков функции с использованием OpenGL (freeglut):

GLPlot.h

C++
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
#ifndef GLPLOT_H_
#define GLPLOT_H_
 
#include <OpenGL/glut.h>
 
struct ScaleParam
{
    double min;
    double max;
    unsigned int size;
};
 
class GLPlot
{
private:
    static double *array;
    static ScaleParam param;
public:
    GLPlot();
    ScaleParam scale(double*, int);
    void init(ScaleParam);
    static double* getArray();
    static ScaleParam getScale();
    static void draw(double*, ScaleParam);
    void plot(int, char**, double&, int);
    virtual ~GLPlot();
};
 
#endif /* GLPLOT_H_ */
GLPlot.cpp

C++
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
95
96
97
98
99
100
101
102
103
104
105
#include "GLPlot.h"
#include <iostream>
 
double* GLPlot::array = 0;
 
ScaleParam GLPlot::param;
 
GLPlot::GLPlot()
{
 
}
 
ScaleParam GLPlot::scale(double* inArray, int size)
{
    GLPlot::param.max = 0.0;
    GLPlot::param.min = 0.0;
    GLPlot::param.size = size;
 
    for (int i = 0; i < size; ++i)
    {
        if (inArray[i] < GLPlot::param.min)
        {
            GLPlot::param.min = inArray[i];
        }
 
        if (inArray[i] > GLPlot::param.max)
        {
            GLPlot::param.max = inArray[i];
        }
    }
 
    std::cout << GLPlot::param.max << std::endl;
    std::cout << GLPlot::param.min << std::endl;
 
    return GLPlot::param;
}
 
void GLPlot::init(ScaleParam param)
{
    glClearColor(0, 0, 0, 1);
    glMatrixMode(GL_PROJECTION);
    glLoadIdentity();
    glOrtho(-0.2, param.size + 0.2, param.min - 0.2, param.max + 0.2, -1, 1);
}
 
void GLPlot::draw(double* inArray, ScaleParam param)
{
    glClear(GL_COLOR_BUFFER_BIT);
 
    glLineWidth(2);
    glBegin(GL_LINES);
    glColor3f(1.0, 1.0, 1.0);
    glVertex2d(0, param.max);
    glVertex2d(0, param.min);
    glEnd();
 
    glLineWidth(2);
    glBegin(GL_LINES);
    glColor3f(1.0, 1.0, 1.0);
    glVertex2d(0, 0);
    glVertex2d(param.size, 0);
    glEnd();
 
    glBegin(GL_LINE_STRIP);
    glColor3f(0.0, 1.0, 0.0);
    for (int i = 0; i < (int)param.size; ++i)
    {
            glVertex2d(i, GLPlot::array[i]);
    }
    glEnd();
    glFlush();
}
 
double* GLPlot::getArray()
{
    return GLPlot::array;
}
 
ScaleParam GLPlot::getScale()
{
    return GLPlot::param;
}
 
void display()
{
    GLPlot::draw(GLPlot::getArray(), GLPlot::getScale());
}
 
void GLPlot::plot(int argc, char** argv, double &inArray, int size)
{
    GLPlot::array = &inArray;
    glutInit(&argc, argv);
    glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB);
    glutInitWindowSize(800, 600);
    glutInitWindowPosition(200, 200);
    glutCreateWindow("Plot");
    glutDisplayFunc(display);
    init(scale(GLPlot::array, size));
    glutMainLoop();
}
 
GLPlot::~GLPlot()
{
 
}
Не могли бы вы подсказать или, чему буду очень рад, показать, как можно реализовать ДПФ/БПФ функции sin(x) * 5*sin(20x) к примеру, и построить его график? Класс тут показал на случай ,если кому-нибудь станет не лень пример привести с его использованием)


Сколько не пытался писать различного кода или брать из интернета, выходит что-то далекое от действительности
Буду очень рад любой помощи
Заранее спасибо
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
07.09.2016, 21:36
Ответы с готовыми решениями:

Вывод графики в OpenGL
Возможно ли в OpenGL выводить картинку или даже фотографию, в форматах jpeg, png, больших размеров и в хорошем качестве?, сильно ли это...

Программировании графики OpenGL
Подскажите пожалуйста! В C++ для программирования графики используется библиотека &quot;glew.h&quot;. Хотелось бы узнать, что использовать...

Изучение OpenGL и 3d графики
Хочу научиться 3d графике на OpenGL 3.0. с целью написать игру. Что надо прочитать? До этого юзал тока текстовую псевдографику.... ...

1
 Аватар для HighPredator
6045 / 2160 / 753
Регистрация: 10.12.2010
Сообщений: 6,005
Записей в блоге: 3
08.09.2016, 11:01
Цитата Сообщение от encore_wst Посмотреть сообщение
как можно реализовать ДПФ/БПФ функции sin(x) * 5*sin(20x) к примеру, и построить его график
1) вычисляете Н значений вашей функции, складываете в массив
2) вычисляете БПФ (например как тут: БПФ на с++)
3) строите график
Все достаточно просто.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
08.09.2016, 11:01
Помогаю со студенческими работами здесь

Простейшие графики функции на OpenGL
Всем доброго времени суток.Нужно построить график функции ... ну скорее не график функции а просто после отработки функции получается...

Переход от примитивной графики к OpenGl в игре
Всем привет! Делаю небольшую игру - вид сверху, территория состоит из клеточек, перемещение вверх-вниз-влево-вправо на одну клетку плавно...

Создание графики в OpenGL с использованием socket
Здравствуйте, стоит следующая задача. Необходимо написать программу с графическим интерфейсом в Qt Designer, используя OpenGL. Сама суть...

Переход от примитивной графики к OpenGl в игре
Всем привет! Делаю небольшую игру - вид сверху, территория состоит из клеточек, перемещение вверх-вниз-влево-вправо на одну клетку плавно...

DirectX, openGl или создание компьютерной графики
Добрый вечер уважаемые читатели форума. Как я уже говорил ранее я закончил с теорией языка C# (покрайней мере базовой теорией принципов ооп...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица. Задача: зафиксировать три левых колонки в отчете. Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) / / . . .
Настройки VS Code
Loafer 13.04.2026
{ "cmake. configureOnOpen": false, "diffEditor. ignoreTrimWhitespace": true, "editor. guides. bracketPairs": "active", "extensions. ignoreRecommendations": true, . . .
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2. Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива. Было так:. . .
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru