Автор работы: Пользователь скрыл имя, 13 Апреля 2012 в 15:09, курсовая работа
Задачей курсового проектирования является разработка программной системы от начала (анализ требований) до конца (тестирование и сопровождение-документация).
В ходе выполнения курсовой работы получить профессиональные навыки в постановке задачи, анализе требований, выборе представления исходных данных и результата, разработке спецификаций, проектирования программной системы, написании программы на выбранном языке программирования с использованием объектно-ориентированной технологии и библиотек классов, тестировании и отладке программы, оформлении документации.
Вступ…………………………………………………………………………….3
Опис алгоритму ………………………………………………………………..4
Текст програми.………………………………………………………………...5
Список використаної літератури …………………………………………….9
Мінестерство
Освіти та Науки України
Звіт по курсовій роботі на тему
„Система
часток”
Кіровоград 2011
Зміст
Вступ…………………………………………………………………
Опис алгоритму ………………………………………………………………..4
Текст програми.………………………………………………………
Список використаної
літератури …………………………………………….9
Вступ
Задачей курсового проектирования является разработка программной системы от начала (анализ требований) до конца (тестирование и сопровождение-документация).
В
ходе выполнения курсовой работы получить
профессиональные навыки в постановке
задачи, анализе требований, выборе
представления исходных данных и
результата, разработке спецификаций,
проектирования программной системы,
написании программы на выбранном языке
программирования с использованием объектно-ориентированной
технологии и библиотек классов, тестировании
и отладке программы, оформлении документации.
Опис
алгоритму
Система частиц представляет из себя вектор из структур. Добавление нового элимента в вектор происходит каждые 100 мс. В то время как функция вызванная из функции-рендера постоянно ведет пересчет местоположения и поворота текстурированого полигона.
Тектс
порграми
#include <GL/glew.h>
#include <GL/glu.h>
#include <GL/freeglut.h>
#include <iostream>
#include <string>
#include <vector>
#include <map>
#include <utility>
#include <cmath>
#include <cstdlib>
#include "picopng.h"
GLuint texture_color_location;
std::map<std::string, GLuint*> textures;
float angle;
struct Mouse {
GLfloat x,y;
} mouse_position;
struct Particle {
GLfloat x,y;
GLfloat speed;
GLfloat angle;
GLfloat distance;
};
std::vector<Particle> particle_storage;
void addTexture(std::string name, std::string path) {
GLuint *texture_id = new GLuint;
glPixelStorei(GL_UNPACK_
glGenTextures(1, texture_id);
glBindTexture(GL_
glTexParameteri(GL_
glTexParameteri(GL_
std::vector<unsigned char> buffer, image;
loadFile(buffer, path.c_str()); //picopng
unsigned long width, heigth;
int error = decodePNG(image, width, heigth,
buffer.
if (error != 0)
std::cout << "Ошибка при открытии файла \"" << path << "\":" << error
<< std::endl;
glTexImage2D(GL_TEXTURE_
GL_UNSIGNED_
if (glGetError() != GL_NO_ERROR) {
std::cout << "Ошибка создания \"" << name << "\" текстуры."
<< std::endl;
} else {
textures.insert(
}
}
GLuint getTexture(std::string name) {
std::map<std::string, GLuint*>::iterator iterator = textures.find(name); //Это С++!!! Ничего другого на ум не пришло.
if (iterator != textures.end()) {
return *iterator->second;
} else {
//std::cout << "Текстура \"" << name << "\" не найдена." << std::endl;
return 0;
}
}
void rotate(int null) {
angle += 1.0f;
glutTimerFunc(10, rotate, 0);
glutPostRedisplay();
}
void GLQuad(std::string texture, GLfloat x1, GLfloat y1, GLfloat x2, GLfloat y2) {
GLuint texture_id = getTexture(texture);
glPushMatrix();
glTranslatef(0.0f, 0.0f, -6.0f);
glBindTexture(GL_
glBegin(GL_QUADS);
glTexCoord2f(0.0f, 1.0f);
glVertex3f(x1, y1, 0);
glTexCoord2f(1.0f, 1.0f);
glVertex3f(x2, y1, 0);
glTexCoord2f(1.0f, 0.0f);
glVertex3f(x2, y2, 0);
glTexCoord2f(0.0f, 0.0f);
glVertex3f(x1, y2, 0);
glEnd();
glPopMatrix();
}
void particle_out() {
std::vector<Particle>::iterato
while (iterator!=particle_storage.
Particle *particle = iterator.base();
glPushMatrix();
GLfloat x,y,a;
x = particle->x+particle->distance
y = particle->y+particle->distance
a = 360*cos(particle->angle);
glTranslatef(x, y, -6.0f);
glRotatef(a, 0.0f, 0.0f, 1.0f);
glScalef(particle->distance/
GLQuad("star", -16.0f, -16.0f, 16.0f, 16.0f);
glPopMatrix();
// Воздействие