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

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

Построения
на плоскости (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++
Среда программирования: 
Microsoft Visual C++ 2010 Express

#include "stdafx.h"
#include <glut.h>
#include <stdio.h>
#include <math.h>
 void Initialize(){
//Выбрать фоновый (очищающий) цвет
glClearColor(1.0,1.0,1.0,1.0); 
//Установить проекцию
glMatrixMode(GL_PROJECTION);
// обнуление трансформации (обнуляем матрицу)
glLoadIdentity();
glOrtho(0.0,100.0,0.0,100.0,-100.0,100.0);
}
double i, j;
double tmp=2;//параметр, на который увеличиваем радиус круга
int k=0;//переменная, которая определяет увеличение/уменьшение круга
double PI=3.14;
void circle(double xc, double yc, double r, int color){//функция, рисующая круг
	glBegin(GL_TRIANGLE_FAN);
	double ang=0;//угол
	if (color==0) glColor3f(0.0,0.0,0.0);//задаем нужный цвет
	if (color==1) glColor3f(1.0,0.0,0.0);
	for (int t=0; t<100; t++){
		ang=2*PI*t/100;
		glVertex2d(xc+r*cos(ang),yc+r*sin(ang));
	}
	glEnd();
}
void RedCircles(double rad){//рисуем красные круги
	for (j=-14; j<=130; j+=16){
		for (i=-6; i<=130; i+=8){
			circle(i,j,rad,1);
		}
	}
	for (j=-6; j<=138; j+=16){
		for (i=-2; i<=134; i+=8){
			circle(i,j,rad,1);
		}
	}
}
void BlackCircles(double rad){//рисуем черные круги
	for(j=-9; j<=135; j+=16){
		for (i=-6; i<=130; i+=8){
			circle(i,j,rad,0);
		}
	}
	for (j=-1; j<=129; j+=16){
		for (i=-2; i<=134; i+=8){
			circle(i,j,rad,0);
		}
	}
}
void Draw(){//основная функция
	glClear (GL_COLOR_BUFFER_BIT);
	BlackCircles(2.1-tmp);//вызываем функцию отрисовки черных кругов, передавая нужный радиус
	RedCircles(2.1+tmp);//вызываем функцию отрисовки красных кругов, передавая нужный радиус
	glutSwapBuffers(); // Отрисовка из буффера
	glFlush();
}
int A=0; 
void Timer(int value){ // ф-ия таймера
	++A;
	if(tmp>=-2 && k==0) tmp-=0.2;//уменьшаем радиус круга
	if(tmp<-2){ k=1; tmp=-2;}
	if (tmp<=2 && k==1) tmp+=0.2;//увеличиваем радиус круга
	if (tmp>2){ k=0; tmp=2;}
	glutDisplayFunc(Draw);// вызываем ф-ию Draw
	glutPostRedisplay(); // ф-ия перерисовки окна
	glutTimerFunc(70, Timer, 1); // снова вызываем ф-ию таймера через 70 мили секунд
}
int main(int argc, char **argv) {  // войти в главный цикл
	// инициализация GLUT и создание окна
	glutInit(&argc, argv);
	glutInitDisplayMode(GLUT_DEPTH | GLUT_DOUBLE | GLUT_RGBA);
	glutInitWindowPosition(200,100); //Позиция окна
	glutInitWindowSize(500,500); // размер окна
	glutCreateWindow("Красные и черные точки"); // имя окна
	// очистка буфера цвета и глубины (очищаем экран)
	glClear (GL_COLOR_BUFFER_BIT); 
	Initialize();	
	// регистрация обратных вызовов
	glutDisplayFunc(Draw); //вызов ф-ии Draw
	glutTimerFunc(1000, Timer, 1); // вызов ф-ии таймера  
	glutMainLoop(); //программы GLUT входят в цикл обработки сообщений функцией glutMainLoop()
	return 1;
}

Прикрепленный файлРазмер
Kursaitova Asie Red&black.zip1.09 Мб