Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 21.03.2017, 00:38   #1
KhNJu
 
Регистрация: 12.03.2017
Сообщений: 5
По умолчанию Обозначить разметку на осях и подписать оси - 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();
}
KhNJu вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как сделать разметку? Dante_Awakening Помощь студентам 0 21.03.2013 22:09
Деления на осях координатной плоскости Gamst Мультимедиа в Delphi 2 27.02.2012 14:15
Вращение камеры вокруг своей оси [OpenGL] russian-stalker Gamedev - cоздание игр: Unity, OpenGL, DirectX 4 14.04.2011 21:03
Трехмерный график в OpenGL. Как разметить оси? Беллая Мультимедиа в Delphi 5 10.11.2010 23:21
Линия на осях 4ifir01 Мультимедиа в Delphi 3 08.12.2008 17:24