Integrantes: -Carlos Asmadt. - Manuel Perez.. Creación del struct partícula: struct tParticle { tParticle *prev,*next; // enlaces con otras partículas.

Slides:



Advertisements
Presentaciones similares
Curso de java básico (scjp)
Advertisements

GRAFOS ESTRUCTURAS DE DATOS.
Funciones y recursividad
Estructuras de datos y algoritmos
Procedimientos y Funciones
Programación, Algoritmos y Estructuras de Datos
Direcciones, Arreglos y Argumentos de Funciones
Procesadores de Lenguajes I
ARREGLOS Estructuras de datos.
Unidad 3 Punteros.
Oscar Bedoya. Edificio 331, 2º piso, E.I.S.C. Estructuras de datos y algoritmos.
Tablas y Cadenas CONTENIDO Tablas
¿Qué es un PUNTERO?: Un puntero es un objeto que apunta a otro objeto. Es decir, una variable cuyo valor es la dirección de memoria de otra variable. No.
Tema 7: Polimorfismo Antonio J. Sierra. Índice Introducción. Sobrecarga de métodos. Objetos como parámetros. Paso de argumentos. Devolución de objetos.
Programación I Teoría VI: Recursividad
Estructuras de repetición
Estructuras dinámicas de datos, TAD Lista, parte 2
Unidad I Java y C++ : Similitudes y diferencias
TRANSFORMACIONES GEOMÉTRICAS
Tema 9 Estructuras.
Programación orientada a objetos
Integrantes: -Carlos Asmadt. - Manuel Perez.. Modelado del entorno, el mundo, la realidad... Objetos Rígidos Objetos Difusos Superficies no definidas.
Signal, kill, sigaction y máscara de señales
ÁRBOLES BINARIOS DE BÚSQUEDA
FUNCIONES EN C. SOBRE FUNCIONES... Caja negra in_1 in_N out_1 In_2 Función: Nombre. (Con el cual es invocada). Entradas. (Parámetros de la función). Salida.
C++ LISTAS C++ 11/04/2017 Ing. Edgar Ruiz Lizama.
Introducción a los punteros
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS Objetos.
Trapcode Particular  Instalación como cualquier programa, en   A partir de que se ha instalado, como es un plug-in.
Archivos.
TABLAS Definición. El tipo tabla permite definir objetos formados por un conjunto de elementos del mismo tipo. Ejemplos. El tipo tabla se utiliza para.
1 Chapter 12 Arrays Dale/Weems/Headington. 2 Chapter 12 Topics l Declaring and Using a One-Dimensional Array l Passing an Array as a Function Argument.
Estructura de Datos y Algoritmos
3ds Max (PFlow). Particle Flow (PFlow) Particle Flow es el sofisticado sistema de partículas no lineal, orientado a eventos integrado en 3ds Max. Permite.
Descomposición Modular. Funciones
Valor X Valor Y Punto (0,0) Coordenadas.
PUNTEROS Ing Anghello Quintero.
ARBOLES ESTRUCTURAS DE DATOS.
Informática Ingeniería en Electrónica y Automática Industrial
Pilas y Colas Estructuras de Datos.
Herramientas de polimorfismo y herencia en C++
El Lenguaje C++. Creación de programas simples de C++ Builder como ejercicios en C++. Los elementos de control fundamentales en C++, incluyendo operadores.
Resumen Fundamentos de Programación/ Programación I
LISTA DOBLEMENTE ENLAZADA
FUNCIONES Conceptos básicos. Retorno de una función Clases de funciones. Paso de parámetros. Funciones y arrays.
Programación Técnica1UVM Tipos de Datos. Programación Técnica2UVM.
Recursividad (2 clases) 1. Nivelación Funciones Menú Vectores String
Funciones Definidas por el Programador
Los punteros Programación modular.
Registros Prof. Flor Narciso Departamento de Computación Escuela de Ingeniería de Sistemas Facultad de Ingeniería Universidad de Los Andes.
Funciones y Clases Amigas (Friend)‏ Miembros Estáticos (Static)
INSTITUTO TECNOLOGICO DE APIZACO
LENGUAJE “C” Programación.
Estructuras con punteros: Nodos y Listas. Un programa C.
Listas. Utilización de un TAD Lista. Interfaz del TAD LISTA public interface Lista { void crearNodo (); /*Crea un nuevo nodo en el TadLista*/ int devolverClave.
PROGRAMACION DE Pilas o Stacks
Tipos de datos básicos en Java
ARREGLOS. La sintaxis para declarar e inicializar un array será: Tipo_de_variable[ ] Nombre_del_array = new Tipo_de_variable[dimensión]; También podemos.
MEMORIA DINÁMICA.
Listas Dinámicas.
Algunas Características de C++ no presentes en C Agustín J. González ELO-329.
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS Arreglo.
UNIDAD 8 Lista Enlazada: Eliminar Deseamos eliminar un elemento llamado elem de la lista enlazada. Es posible que la variable ini sea modificada. main(){
Las interfaces Predicate y Function Versión Unidad Didáctica 17 Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos.
Introducción al Lenguaje C (I) Tipos básicos, arrays y punteros Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos Versión
Lenguaje de Programación II Prof. Rafael Montenegro B. Carrera: T.S.U en Informática Periodo: 2014-I.
Roger Miranda Colorado
2012-BM5A. Unos tips antes de empezar: C# es Case Sensitive (sensible a mayúsculas) Pepe ≠ pepe ≠ pEpE Las asignaciones se hacen con “=” y las comparaciones.
Paso de parámetros Diseño de programas iterativos Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos Unidad Didáctica 7 Versión.
BREVE INTRODUCCION A LA PROGRAMACION
Transcripción de la presentación:

Integrantes: -Carlos Asmadt. - Manuel Perez.

Creación del struct partícula: struct tParticle { tParticle *prev,*next; // enlaces con otras partículas tvector pos; // posición actual tvector prevPos; // posición anterior tvector dir; // dirección y velocidad actual int life; // tiempo de vida tColor color; // color actual tColor prevColor; // color anterior tColor deltaColor; // delta para cambio de color };

Creacion de la estructura del emisor: struct tEmitter { long id; // ID del emisor char name[80]; // nombre del emisor long flags; // banderas del emisor // Información de enlaces tEmitter *prev; // apuntador al padre tEmitter *next; // apuntador al hijo // Información de transformación tvector pos; // posición XYZ float yaw, yawVar; // Rotación en Y y variación float pitch, pitchVar; // Rotación en X y variación float speed,speedVar; // velocidad y variación de velocidad // Partícula tParticle *particle; // Lista enlazada terminada en NULL int totalParticles; // Total emitidas en cualquier momento int particleCount; // Total emitidas en este momento int emitsPerFrame, emitVar; // Emitidas por frame y su variación int life, lifeVar; // tiempo de vida y su variación tColor startColor, startColorVar; // color actual tColor endColor, endColorVar; // color actual // Física tvector force; //fuerza de gravedad, viento, etc. };

Proceso que dibuja la escena: void drawScene(){ //limpiar bufferes de profundidad y de color AQUI glPushMatrix(); //Establecer posición y orientación del emisor AQUI renderEmitter(&m_Emitter); //desplegar emisor //limpiar y actualizar glPopMatrix(); glFinish(); SwapBuffers(m_hDC); UpdateStatus(); }

Proceso que agrega una partícula al sistema: BOOL addParticle(tEmitter *emitter) { /// Variables locales /////////////////////////////////////////////////////////// tParticle *particle; tColor start,end; float yaw,pitch,speed; /////////////////////////////////////////////////////////////// // si hay un emisor y una partícula en el grupo... //... y si no he emitido el máximo.... if (emitter != NULL && m_ParticlePool != NULL && emitter- >particleCount totalParticles) { particle = m_ParticlePool; // La partícula actual //Actualizar apuntadores m_ParticlePool = m_ParticlePool->next; if (emitter->particle != NULL) emitter->particle->prev = particle; particle->next = emitter->particle; particle->prev = NULL; //agregarla al emisor emitter->particle = particle; //establecer su posición (relativa a la posición del emisor) particle->pos.x = 0.0f; particle->pos.y = 0.0f; particle->pos.z = 0.0f;

//guardar posición anterior para antialising particle->prevPos.x = 0.0f; particle->prevPos.y = 0.0f; particle->prevPos.z = 0.0f; // calcular vector dirección inicial yaw = emitter->yaw + (emitter->yawVar * RandomNum()); pitch = emitter->pitch + (emitter->pitchVar * RandomNum()); // convertir las rotaciones a un vector RotationToDirection(pitch,yaw,&particle->dir); // Multiplicarlo en el factor de velocidad speed = emitter->speed + (emitter->speedVar * RandomNum()); particle->dir.x *= speed; particle->dir.y *= speed; particle->dir.z *= speed; // Calcular los colores start.r = emitter->startColor.r+(emitter->startColorVar.r*RandomNum()); start.g = emitter->startColor.g+(emitter- >startColorVar.g*RandomNum()); start.b = emitter->startColor.b+(emitter- >startColorVar.b*RandomNum()); end.r = emitter->endColor.r + (emitter->endColorVar.r*RandomNum()); end.g = emitter->endColor.g + (emitter->endColorVar.g* RandomNum()); end.b = emitter->endColor.b + (emitter->endColorVar.b* RandomNum()); particle->color.r = start.r; particle->color.g = start.g; particle->color.b = start.b; // Calcular tiempo de vida // Calcular tiempo de vida particle->life=emitter- >life+(int)((float)emitter->lifeVar* RandomNum()); // Crear la variación del color particle->deltaColor.r = (end.r - start.r) / particle->life; particle->deltaColor.g = (end.g - start.g) / particle->life; particle->deltaColor.b = (end.b - start.b) / particle->life; //aumentar contador de partículas emitter->particleCount++; return TRUE; } return FALSE; }

Se crea una función que actualice los parámetros de las partículas según el efecto que se desea modelar y se llama esa función numeradas veces hasta obtenerlo y así completar nuestro sistema de partículas.

X men 2Prince of Persia

Half life Dirt 2 Mafia 2 Prototype