Форум программистов, компьютерный форум, киберфорум
Наши страницы
OpenGL
Войти
Регистрация
Восстановить пароль
 
lapsha1337
0 / 0 / 0
Регистрация: 04.05.2017
Сообщений: 60
1

Выделить точку на графике

17.09.2017, 15:18. Просмотров 229. Ответов 4
Метки нет (Все метки)

Есть график функции sin(x^2/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
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
144
145
146
147
148
149
150
151
152
153
154
#include <GL\freeglut.h>
#include <cmath>
#include <iostream>
 
using namespace std;
 
 
const float  PI_F = 3.14159265358979f;
 
// Window size
int width = 512;
int height = 512;
 
 
const int nPoinst = 400;
const int halfOfNPoints = nPoinst / 2;
float points[nPoinst];
 
void DrawAxes();
void DrawSinX();
void GeneratePoints(int amountOfPoinst, float xMin, float xMax);
void Enable2D(int width, int height);
void DisplayText(float x, float y, int r, int g, int b, const char *string);
void Init()
{
 
    Enable2D(width, height);
    glClearColor(1.0f, 1.0f, 1.0f, 1.0f);
 
    GeneratePoints(halfOfNPoints, -2*PI_F, 2*PI_F);
}
 
void GeneratePoints(int amountOfPoints, float xMin, float xMax)
{
    float step ;
    float xScaleCof = 40.0f;
    float yScaleCof = 100.0f;
 
    float x;
xMin=-7;
xMax=7;
x = xMin;
step = abs((xMax - xMin) / (float)amountOfPoints);
    for (int i = 0, index = 0; i < amountOfPoints; ++i, index += 2)
    {
        if(x>xMax) break;
        points[index] = x * xScaleCof;
        points[index + 1] = sin(pow(x,2)/2) * yScaleCof;
        x += step;
 
    }
}
 
void Draw()
{
 
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
    glLoadIdentity();
  DisplayText(-15, 230, 1, 0, 0, "y");
  DisplayText(230,-15, 1, 0, 0, "x");
  DisplayText(-25,-25, 1, 0, 1, "0");
  DisplayText(-20,95, 1, 0, 1, "1");
   DisplayText(-20,-110, 1, 0, 1, "1");
 
 
    DrawAxes();
    DrawSinX();
 
 
    glutSwapBuffers();
}
 
void DrawSinX()
{
    glBegin(GL_LINE_STRIP);
    glColor3f(0.0f, 0.0f, 0.0f);
    for (int i = 0, index = 0; i < halfOfNPoints; ++i, index += 2)
    {
        glVertex2f(points[index], points[index + 1]);
    }
    glEnd();
}
 
void DrawAxes()
{
 
 
 glBegin(GL_LINES);
     glColor3f(1.0f, 1.0f, 0.0f);
    for(double i=-256;i<=256;i=i+25.6) {
        glVertex2f(i,-256);
        glVertex2f(i,256);
 
        glVertex2f(256,i);
        glVertex2f(-256,i);
    }
    glEnd();
 
 
   //  X
    glBegin(GL_LINES);
   glColor3f(0.0f, 1.0f, 0.0f);
    glVertex2f(-width / 2.0f, 0.0f);
    glVertex2f(width / 2.0f, 0.0f);
    glEnd();
 
 
 
    // Y
    glBegin(GL_LINES);
    glColor3f(0.0f, 1.0f, 0.0f);
    glVertex2f(0.0f, -height / 2.0f);
    glVertex2f(0.0f, height / 2.0f);
    glEnd();
}
 
void Enable2D(int width, int height)
{
    glViewport(0, 0, width, height);
    glMatrixMode(GL_PROJECTION);
    glLoadIdentity();
    glOrtho(-width / 2.0f, width / 2.0f, -height / 2.0f, height / 2.0f, 0.0f, 1.0f);
    glMatrixMode(GL_MODELVIEW);
    glLoadIdentity();
}
void DisplayText(float x, float y, int r, int g, int b, const char *string)
{
    int j = strlen(string);
 
    glColor3f(r, g, b);
    glRasterPos2f(x, y);
    for (int i = 0; i < j; i++)
    {
        glutBitmapCharacter(GLUT_BITMAP_TIMES_ROMAN_24, string[i]);
    }
}
 
int main(int argc, char** argv)
{
 
 
    glutInit(&argc, argv);
    glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB | GLUT_DEPTH);
    glutInitWindowSize(width, height);
    glutCreateWindow("Axes");
 
    glutDisplayFunc(Draw);
 
    Init();
 
 
    glutMainLoop();
    return 0;
}
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.09.2017, 15:18
Ответы с готовыми решениями:

Как выделить точку на графике, зная ее координаты
Здравствуйте, Подскажите, как выделить точку на графике, зная ее координаты Х...

В Excel 2003 нужно на графике уравнения показать разрыв графика, выколотую точку, закрашенную точку и маркерами показать только корни уравнения.
Обьясните пожалуйста как дураку!))

Таскать точку на 3D графике мышкой
&quot;Более чем 25-летний опыт—Миллионы пользователей&quot; красуеться на главной...

Как на 3D-графике поставить точку
Подскажите как на 3д графике поставить точку

Как отметить точку на графике?
Нужно отметить точку на графике с заданными х и у

4
vxg
Модератор
3265 / 2063 / 325
Регистрация: 13.01.2012
Сообщений: 8,002
18.09.2017, 08:10 2
lapsha1337, и что именно мы должны в вашем коде искать?
0
lapsha1337
0 / 0 / 0
Регистрация: 04.05.2017
Сообщений: 60
18.09.2017, 16:24  [ТС] 3
Нужно добавить функции выделения жирной точкой значения функции в точки х какая водится с клавиатуры
0
vxg
Модератор
3265 / 2063 / 325
Регистрация: 13.01.2012
Сообщений: 8,002
18.09.2017, 20:35 4
lapsha1337, просто GL_POINT поставить туда не вариант?
0
vindast
56 / 54 / 10
Регистрация: 25.04.2017
Сообщений: 509
19.09.2017, 07:56 5
lapsha1337, или отрисовать по кругу точки вокруг заданной.
0
19.09.2017, 07:56
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.09.2017, 07:56

Выделить область на графике
Подскажите, как выделить область (пунктиром) на графике?

Как поставить точку на простом графике?
Сделал через матрицы график. Как поставить на изгибах точки?(через tracers или...

Найти точку пересечения на графике (zedgraph)
Имеется одна функция h(t) и прямая X=-0,5. Как найти точку пересечения функции...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru