Понедельник, 25 Ноября 2024, 00:37

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Проградуировать и подписать шкалы координатных осей (OpenGL)
KhNJuДата: Вторник, 21 Марта 2017, 09:07 | Сообщение # 1
уже был
Сейчас нет на сайте
Не знаю, правильно ли я выбрала раздел для обращения со своим вопросом.... только начала разбираться с OpenGL, возникли трудности, с которыми самой справиться не получается...Очень надеюсь на Вашу помощь! Вообщем, по заданию необходимо построить графики двух функций в одной системе координат, ширина линий графика должна быть больше ширины линий координатных осей, цвет графиков должен быть различным - это сделала, работает. Помогите, пожалуйста, проградуировать и подписать шкалы координатных осей...
Код
#include "stdafx.h"
#include <GL/glut.h >
#include <stdlib.h>
#include <math.h>
#include <stdarg.h>

GLint Width = 350, Height = 350; //начальные размеры окна

//Функция вырисовки на экране
void Display()
{
    glClearColor(1, 1, 0, 1); // цвет окна
    glClear(GL_COLOR_BUFFER_BIT); //очистка буфера цвета и буфера глубины
    glLineWidth(1); // ширина линий кооринатных осей
    glColor3f(0, 0, 0); // цвет координатных осей (черный)
    glBegin(GL_LINES); // ось ОХ, ось OY
    glVertex2f(-10, 0);
    glVertex2f(10, 0);
    glVertex2f(0, 10);
    glVertex2f(0, -10);
    glEnd();

    // построение графиков
    glLineWidth(2);
    glColor3f(1, 0, 0); // цвет графика 1-й функции (красный)
    glBegin(GL_LINE_STRIP); // график 1-й функции
    for (double i = 1; i <= 5; i += 0.1) { //промежуток нахождения решения
  double y = sqrt(log(i));
  glVertex2d(i, y);
    }
    glEnd();
    glBegin(GL_LINE_STRIP); // график 2-й функции
    glColor3f(0, 0, 1); // цвет графика 2-й функции (синий)
    for (double j = 1; j <= 5; j += 0.1) { //промежуток нахождения решения
  double k = pow(log(j), 1.0 / 4);
  glVertex2d(j, k);
    }
    glEnd();
    glFinish();
}

//Функция вызывается при изменении размеров окна
void Reshape(GLint w, GLint h)
{
    Width = w;
    Height = h;

    // устанавливаем размеры области отображения
    glViewport(0, 0, w, h);

    // отрографическая проекция
    glMatrixMode(GL_PROJECTION);
    glLoadIdentity();
    glOrtho(-20, 10, -20, 20, -10, 10);
    glMatrixMode(GL_MODELVIEW);
    glLoadIdentity();
}

// Функция обработки сообщений с клавиатуры
void Keyboard(unsigned char key, int x, int y)
{
#define ESCAPE '\033'
    if (key == ESCAPE)
  exit(0);
}

// Главный цикл приложения
void main(int argc, char* argv[])
{
    glutInit(&argc, argv);
    glutInitDisplayMode(GLUT_RGB);
    glutInitWindowSize(Width, Height);
    glutCreateWindow("Графики функций");
    glutDisplayFunc(Display);
    glutReshapeFunc(Reshape);
    glutKeyboardFunc(Keyboard);
    glutMainLoop();
}
LetsOffBrainsДата: Вторник, 21 Марта 2017, 10:34 | Сообщение # 2
Project SoRDeLKa
Сейчас нет на сайте
for( int i = -9; i < 10; i++){
double k = 10.0 // коэффицент для уменьшения линии, если так можно
glBegin(GL_LINES);
glVertex2f(i, -1.0 / k);
glVertex2f(i, 1.0 / k);
some_function_printing_text(text = i, x = i, y = -2.0 / k)
glEnd();
}
Я не разбираюсь, но что-то такое, вероятно, должно получиться.



KhNJuДата: Вторник, 21 Марта 2017, 10:52 | Сообщение # 3
уже был
Сейчас нет на сайте
Спасибо! Разметку сделать получилось, а подписать оси - нет...
SaiteiДата: Вторник, 21 Марта 2017, 14:57 | Сообщение # 4
старожил
Сейчас нет на сайте
KhNJu, названия темы изменил:
1. Старое название не несло смысловой нагрузки, не раскрывало суть темы
2. Писать капсом - дурная привычка
  • Страница 1 из 1
  • 1
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг