Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/4: Рейтинг темы: голосов - 4, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 27.12.2018
Сообщений: 28
1

Программа реализующая построение графика функции

19.05.2019, 12:31. Показов 646. Ответов 2
Метки нет (Все метки)

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
#include <GL/glut.h>
#include <iostream>
#include <math.h>
#include <string>
#include <fstream>
#include <vector>
 
int count = 0;  // Размер масива У,Х
float* X; // масив для хранение х-ов
float* Y; // масив для хранения у-ов
 
void display(){                    // Функция перерисовки дисплея
  glClear(GL_COLOR_BUFFER_BIT);
  glBegin(GL_LINES);
   
  glColor3f(1.0, 0.0, 0.0);
  glVertex3f(0, 50, 0);   // Рисование системи координат
  glVertex3f(0, -50, 0);
  glVertex3f(-50, 0, 0);
  glVertex3f(50, 0, 0);
 
  for(int i = -11; i < 8; i++){  
    glVertex3f(10 + i * 5, -2, 0);
    glVertex3f(10 + i * 5, 2, 0);
  }
 
  for(int i = -11; i < 8; i++){
    glVertex3f(-2, 10 + i * 5, 0);
    glVertex3f(2, 10 + i * 5, 0);
  }// Конец рисования системы крдинат
 
  glEnd();
 
  glBegin(GL_POINTS); // Рисование точок графика функции
  float y;
  for(int i = 0; i < count; i++){
      glVertex3f(X[i], Y[i], 0);
  }
  glEnd();
  glutSwapBuffers();
}
 
 
int main(int argc, char** argv)
{
  std::vector<float> arr;  // Вектор в котором будем хранить даные из файла
  std::ifstream fin;       // Для вивода даних из файла
  std::string path;        // Путь к файлу 
  do{                      // Цикл который обеспечывает открития файла
    std::cout<<"Enter path: ";
    std::cin>>path;
    fin.open(path.c_str());
    if(!fin.is_open()){
      std::cout<<"Error: File not find!\n";
    }
  }while(!fin.is_open());
   
  float i = 0.0;
  while(!fin.eof()){  // Запись даних из файла в вектор
    fin>>i;
    arr.push_back(i);
  }
  fin.close();
   
  for(int j = 0; j < arr.size(); j++){  // Цикл для подсчота х-ов в диапазоне
    if(arr[j] > -50.0 && arr[j] < 50.0) // [-50;50]
      {
    count++;
      }
  }
  X = new float[count];  // Создание масива с х
  Y = new float[count];  // Создание масива с У
 
  int n = 0;
  for(int j = 0; j < arr.size(); j++){  // Цыкл для записи даних(х) указаного
    if(arr[j] > -50.0 && arr[j] < 50.0){ // диапазона в масив Х
      X[n] = arr[j];
      n++;
    }
  }
   
  for(int j = 0; j < count; j++){
    Y[j] = 2*sin(X[j])*pow(M_E,4/5);  // Заполнение масива У
  }
  // Стандартное создание окна в OpenGl
  glutInit(&argc, argv);
  glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB);
  glutInitWindowSize(400, 400);
  glutInitWindowPosition(20, 810);
  glutCreateWindow("Rownanie");
  glClearColor(0, 0, 0, 0);
  glMatrixMode(GL_PROJECTION);
  glLoadIdentity();
  glOrtho(-55, 55, -55, 55, -100, 100);
  glutDisplayFunc(display);
  glutMainLoop();
  delete [] X;
  delete [] Y;
}

выдаёт ошибку, где она?
__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
19.05.2019, 12:31
Ответы с готовыми решениями:

Вычисление функции на заданном промежутке, и построение графика этой функции
Написать блок-схему и программу вычисления функции на за- данном промежутке с шагом 0.2 и...

Построение графика функции
Помогите, пожалуйста, определить условия для построения графика с помощью графического модуля

Построение графика функции
Как визуально построить график функции? sin x +x-3=0 На интервале от a до b. (a,b - любые числа)...

Построение графика функции
Помогите, пожалуйста, построить оси координат и график функции f(x) на заданном диапазоне

2
539 / 471 / 314
Регистрация: 24.09.2013
Сообщений: 3,344
Записей в блоге: 1
19.05.2019, 15:46 2
Это программа для Windows Forms не подходит
0
4648 / 2474 / 423
Регистрация: 05.10.2013
Сообщений: 6,744
Записей в блоге: 182
24.05.2019, 16:58 3
Цитата Сообщение от nigrum messorem Посмотреть сообщение
Программа реализующая построение графика функции
...
C++
1
2
3
#include <GL/glut.h>
...
// Стандартное создание окна в OpenGl
OpenGL 1.1, FreeGLUT, C++, VS2015: Sin_FreeGlutOpenGL11Cpp.zip

Settings

1.
Configuration: All Configurations
Platforms: All Platforms

C/C++ -> Genaral -> Additional Include Directories:
$(SolutionDir)Libs\freeglut-3.0.0-2\include

Linker -> Input -> Additional Dependencies
freeglut.lib

2.
Configuration: All Configurations
Platforms: Win32

Linker -> General -> Additional Library Directories:
$(SolutionDir)Libs\freeglut-3.0.0-2\lib\Win32

Build Events -> Post-Build Event
xcopy /y /d "$(SolutionDir)Libs\freeglut-3.0.0-2\lib\Win32\freeglut.dll" "$(OutDir)"

3.
Configuration: All Configurations
Platforms: x64

Linker -> General -> Additional Library Directories:
$(SolutionDir)Libs\freeglut-3.0.0-2\lib\Win64

Build Events -> Post-Build Event
xcopy /y /d "$(SolutionDir)Libs\freeglut-3.0.0-2\lib\Win64\freeglut.dll" "$(OutDir)"


main.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
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
#include <GL/freeglut.h>
#include <string>
 
#define _USE_MATH_DEFINES
#include <math.h>
 
// Hide the console
#pragma comment(linker, "/SUBSYSTEM:windows /ENTRY:mainCRTStartup")
 
const float M_PI_F = (float)M_PI;
const float g_fieldWidth = 4 * M_PI_F;
const float g_fieldHeight = 4;
const float g_halfFieldWidth = g_fieldWidth / 2;
const float g_halfFieldHeight = g_fieldHeight / 2;
const float g_onePercentOfHalfWidth = (float)g_halfFieldWidth / 100;
const float g_onePercentOfHalfHeight = (float)g_halfFieldHeight / 100;
 
void drawText(float x, float y, std::string text, float r, float g, float b)
{
    glColor3f(r, g, b);
    glRasterPos2f(x, y);
    glutBitmapString(GLUT_BITMAP_8_BY_13, (const unsigned char*)text.c_str());
}
 
void drawLine(
    float x0, float y0, float x1, float y1,
    float r, float g, float b)
{
    glColor3f(r, g, b);
    glBegin(GL_LINES);
    {
        glVertex2f(x0, y0);
        glVertex2f(x1, y1);
    }
    glEnd();
}
 
void drawSin(float r, float g, float b)
{
    const float step = (float)M_PI / 10;
 
    float xPrev = -2 * (float)M_PI;
 
    for (size_t i = 0; i < 40; i++)
    {
        float x0 = xPrev;
        float y0 = sin(x0);
 
        float x1 = x0 + step;
        float y1 = sin(x1);
        xPrev = x1;
 
        drawLine(x0, y0, x1, y1, r, g, b);
    }
}
 
void drawCoordinates(float r, float g, float b)
{
    float halfOfLengthOfLine = 4;
 
    // 1
    drawText(-14 * g_onePercentOfHalfWidth, g_halfFieldHeight / 2, "1", r, g, b);
    drawLine(
        -halfOfLengthOfLine * g_onePercentOfHalfWidth,
        g_halfFieldHeight / 2,
        halfOfLengthOfLine * g_onePercentOfHalfWidth,
        g_halfFieldHeight / 2, r, g, b);
 
    // -1
    drawText(-18 * g_onePercentOfHalfWidth, -g_halfFieldHeight / 2, "-1", r, g, b);
    drawLine(
        -halfOfLengthOfLine * g_onePercentOfHalfWidth,
        -g_halfFieldHeight / 2, 2 * g_onePercentOfHalfWidth,
        -g_halfFieldHeight / 2, r, g, b);
 
    // Pi
    drawText(
        M_PI_F - 5 * g_onePercentOfHalfWidth,
        7 * g_onePercentOfHalfHeight, "Pi", r, g, b);
    drawLine(
        M_PI_F, -halfOfLengthOfLine * g_onePercentOfHalfHeight,
        M_PI_F, halfOfLengthOfLine * g_onePercentOfHalfHeight,
        r, g, b);
 
    // -Pi
    drawText(
        -M_PI_F - 7 * g_onePercentOfHalfWidth,
        7 * g_onePercentOfHalfHeight, "-Pi", r, g, b);
    drawLine(
        -M_PI_F, -halfOfLengthOfLine * g_onePercentOfHalfHeight,
        -M_PI_F, halfOfLengthOfLine * g_onePercentOfHalfHeight,
        r, g, b);
}
 
void draw()
{
    glClear(GL_COLOR_BUFFER_BIT);
    drawText(
        g_halfFieldWidth - 80 * g_onePercentOfHalfWidth,
        g_halfFieldHeight - 20 * g_onePercentOfHalfHeight,
        "y = Sin(x)", 1, 1, 1);
 
    // X
    drawLine(-g_halfFieldWidth, 0, g_halfFieldWidth, 0, 1, 0, 0);
    drawText(
        g_halfFieldWidth - 10 * g_onePercentOfHalfWidth,
        -10 * g_onePercentOfHalfHeight, "X", 1, 0, 0);
 
    // Y
    drawLine(0, -g_halfFieldHeight, 0, g_halfFieldHeight, 0, 1, 0);
    drawText(
        -10 * g_onePercentOfHalfWidth,
        g_halfFieldHeight - 15 * g_onePercentOfHalfHeight, "Y", 0, 1, 0);
 
    drawCoordinates(1, 1, 1);
 
    drawSin(0.5, 0.5, 1);
 
    glutSwapBuffers();
}
 
void setup2DGraphics(double width, double height)
{
    double halfWidth = width / 2;
    double halfHeight = height / 2;
    glMatrixMode(GL_PROJECTION);
    glLoadIdentity();
    glOrtho(-halfWidth, halfWidth, -halfHeight, halfHeight, 100, -100);
    glMatrixMode(GL_MODELVIEW);
    glLoadIdentity();
}
 
int main(int argc, char** argv)
{
    glutInit(&argc, argv);
    glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB);
    glutInitWindowSize(256, 256);
    glutCreateWindow("Sin");
    setup2DGraphics(g_fieldWidth, g_fieldHeight);
    glutDisplayFunc(draw);
    glutMainLoop();
    return 0;
}


0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
24.05.2019, 16:58

Построение графика функции f(x)
Необходимо построить график функции y=45x^3-1

Построение графика функции
Як побудувати графік функції в cfree? Які бібліотеки потрібно підключити і чи можете написати...

Построение графика линейной функции
построение графика линейной функции y=kx ; k=0.1 , 0.2 , 0.3 , ... , 1 .

Построение графика функции в консоли
Привет всем Задание такое - построить график функции |y| = |sin(x)| + cos(x) Вся сложность...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru