Уроки, алгоритмы, программы, примеры

Материалы по разделам

Построения
на плоскости (2D)
Графика
в пространстве (3D)
Вычислительная
геометрия
Физическое
моделирование
Фрактальная
графика

Новые комментарии

У меня проблема вот с этим: gl.Clear(OpenGL.GL_COLOR_BUFFER_BIT | OpenGL.GL_DEPTH_BUFFER_BIT);. Вылезает ошибка: CS1061 "object" не содержит определения "GL_COLOR_BUFFER_BIT", и не удалось найти доступный метод расширения "GL_COLOR_BUFFER_BIT",...
Большое спасибо. Единственный код который прошел без каких либо ошибок. Ура!!!
Скажите пожалуйста, подскажите алгоритм по которому по заданным точкам можно определить тип многогранника, скажем это куб или прямоугольный параллелепипед. Нашел теорию по этим фигурам: https://www.mat... https://www.mat... Акцентировать внимание...
Всем у кого не работает. файл wizard.script Ещё одно упоминание Glut32 в строке "if (!VerifyLibFile(dir_nomacro_lib, _T("glut32"), _T("GLUT's"))) return false;" меняем на "if (!VerifyLibFile(dir_nomacro_lib, _T("freeglut"), _T("GLUT's"))) return...
Не получается, емаё

Счетчики и рейтинг

Рейтинг@Mail.ru Яндекс.Метрика
Язык программирования: 
C/C++
Среда программирования: 
Visual Studio 2013

#include <glut.h>
#include <math.h>
#include <stdlib.h>
#include <iostream>
 
using namespace std;
 
float aut, aut2, aut3;//счетчик
float x, y;//координаты
float angle, angle2, angle3, angle4;//параметр отвечающий за движение
float sk = 1;
 
//сохранение пропорций
void proporsion(int w, int h)
{
	if (h == 0)
	{
		h = 1;
	}
	float ratio = float(w) / h;
	glMatrixMode(GL_PROJECTION);
	glLoadIdentity();
	gluPerspective(45, ratio, 500, 500);
	glMatrixMode(GL_MODELVIEW);
}
 
//рисование
void paint(void)
{
	glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);// очистка буфера
 
	//четырехугольник
	glPushMatrix();
	glScalef(sk, sk, sk);
	glRotatef(angle2, 0, 0, 1);
 
	glPushMatrix();
	glTranslatef(0, 10 - angle, 0);
	glBegin(GL_QUADS);//рисуем квадрат
	glColor3ub(0, 0, 0);//цвет
	glVertex2f(-2.5, -2.5);
	glVertex2f(-2.5, 2.5);
	glVertex2f(2.5, 2.5);
	glVertex2f(2.5, -2.5);
	glEnd();
	glPopMatrix();
 
 
	glPushMatrix();
	glTranslatef(-10 + angle, 0, 0);
	glRotatef(45, 0, 0, 1);
	glBegin(GL_QUADS);//рисуем квадрат
	glColor3ub(0, 0, 0);//цвет
	glVertex2f(-2.5, -2.5);
	glVertex2f(-2.5, 2.5);
	glVertex2f(2.5, 2.5);
	glVertex2f(2.5, -2.5);
	glEnd();
	glPopMatrix();
 
	glPushMatrix();
	glTranslatef(0, -10 + angle, 0);
	glRotatef(25, 0, 0, 1);
	glBegin(GL_QUADS);//рисуем квадрат
	glColor3ub(0, 0, 0);//цвет
	glVertex2f(-2.5, -2.5);
	glVertex2f(-2.5, 2.5);
	glVertex2f(2.5, 2.5);
	glVertex2f(2.5, -2.5);
	glEnd();
	glPopMatrix();
 
	glPushMatrix();
	glTranslatef(10 - angle, 0, 0);
	glRotatef(65, 0, 0, 1);
	glBegin(GL_QUADS);//рисуем квадрат
	glColor3ub(0, 0, 0);//цвет
	glVertex2f(-2.5, -2.5);
	glVertex2f(-2.5, 2.5);
	glVertex2f(2.5, 2.5);
	glVertex2f(2.5, -2.5);
	glEnd();
	glPopMatrix();
	//glPopMatrix();
 
	glPopMatrix();
	glutSwapBuffers();
 
}
//установка таймера
void Timer(int)
{
	angle += 0.5 - aut;
	if (angle > 9.5)
	{
		aut = 0.5;
		angle2 += 5;
		sk -= 0.05;
		if (sk < 0.05)
		{
			angle = 0;
			sk = 1;
			aut = 0;
		}
	}
	cout << sk << endl;
	glutTimerFunc(50, Timer, 0);//обновлять экран каждые 15мсек
	glutPostRedisplay();
}
 
int main(int argc, char **argv) {
 
	// инициализация
	glutInit(&argc, argv);
	glutInitDisplayMode(GLUT_DEPTH | GLUT_DOUBLE | GLUT_RGBA);//double: буфер рисвания и буф сторонних вычислений
	glutInitWindowPosition(100, 100);//позиция окна
	glutInitWindowSize(500, 500);//размеры окна
	glutCreateWindow("Совмещение квадратов");//название окна
	glClearColor(1.0, 1.0, 1.0, 1.0);//цвет окна
	glOrtho(-5.0, 5.0, -5.0, 5.0, -5.0, 5.0);//установка границ
 
	glutDisplayFunc(paint);//вызов функции рисования
	glutReshapeFunc(proporsion);//вызов функции сохранения пропорций
	glutTimerFunc(0, Timer, 0);//вызов таймера
	glutMainLoop();//основной цикл
	return 1;
}

Прикрепленный файлРазмер
Basov-Tishenko_Alexandr_Sovmeshenie_Kvadratov.rar928.16 кб

Комментарии

ильгиз аватар
Опубликовано ильгиз (не проверено) в 10. Февраль 2017 - 14:35.

Я хотел узнать математика это обязательно в программирование. Пять лет назад просто
из любопытства я увлекся HTML потом изучил CSS и JvaScript потом изучил PHP и Java.
Как то не задумывался и начал смотреть форумы и узнал что без математики не стать
программистом.Пожалел что потерял время на изучение мне 50.В свое время я не учил
математику.Пожалуйста ответьте.

admin аватар
Опубликовано admin в 13. Февраль 2017 - 11:47.

Здравствуйте, Ильгиз.

Математика - царица наук (Карл Гаусс). Изучение математики начинается с детского сада, когда нас учат считать и выполнять простые арифметические операции. Любой, даже самый простейший алгоритм будет связан с арифметическими вычислениями. Поэтому без математики не стать программистом. Однако, хороший программист оперирует сложными алгоритмами, построенными по законам различных разделов математики: геометрии, алгебры, теории множеств, тригонометрии и т.д. Большинство алгоритмов, представленных на данном сайте, являются самыми простыми алгоритмами компьютерной графики. При этом они используют известные математические формулы.