6
Gráficas Computacionales Prof. Eduardo Rosado Malani Hernández Barrera 889931 Martha Patricia Moreno Arias 889873 Fernando Salvador Santos Dueñez 887086 Diana Gabriela Nava Domínguez 889910 Arquitectura Dos librerías importantes que se están ocupando en la realización del programa que se muestra a continuación son las de OpenGL y Corona, las cuales son llamadas en las clases donde es requerida la manipulación de los objetos con ciertas operaciones para producir aplicaciones interactivas en tres dimensiones esto se realiza con OpenGL y para la manipulación y carga de las imágenes en formato jpg, png, jpeg, etc., que se puedan mapear a los polígonos sin muchas complicaciones se utiliza la librería de corona. En el siguiente diagrama se muestran las relaciones entre las clases que involucran el sistema, así como la especialización que existe en las clases de Movimiento, Traslación, Objetos3D y Luz. La clase principal o superclase en el sistema es Escena que es donde se muestra lo que las clases como Objetos3D están creando, la cual a su vez tiene los objetos de esfera, toroide, cubo, prisma y cono heredados y que son objetos que pueden tener asociados materiales y texturas y movimientos que están definidos en las clases con su mismo nombre. Las variables definidas para cada uno de los objetos se mencionan a continuación: Esfera: radio, meridiano y paralelo Toroide: radioInterno, radioExterno, lados y anillos Cubo: lado Prisma: lado, apotema y altura Cono: radio, altura, lados y anillos

Arquitectura

Embed Size (px)

DESCRIPTION

Descripción de la Arquitectura del FrameWork

Citation preview

Gráficas Computacionales Prof. Eduardo Rosado

Malani Hernández Barrera 889931

Martha Patricia Moreno Arias 889873 Fernando Salvador Santos Dueñez 887086

Diana Gabriela Nava Domínguez 889910

Arquitectura

Dos librerías importantes que se están ocupando en la realización del programa que se

muestra a continuación son las de OpenGL y Corona, las cuales son llamadas en las clases

donde es requerida la manipulación de los objetos con ciertas operaciones para producir

aplicaciones interactivas en tres dimensiones esto se realiza con OpenGL y para la

manipulación y carga de las imágenes en formato jpg, png, jpeg, etc., que se puedan mapear

a los polígonos sin muchas complicaciones se utiliza la librería de corona.

En el siguiente diagrama se muestran las relaciones entre las clases que involucran el

sistema, así como la especialización que existe en las clases de Movimiento, Traslación,

Objetos3D y Luz.

La clase principal o superclase en el sistema es Escena que es donde se muestra lo que las

clases como Objetos3D están creando, la cual a su vez tiene los objetos de esfera, toroide,

cubo, prisma y cono heredados y que son objetos que pueden tener asociados materiales y

texturas y movimientos que están definidos en las clases con su mismo nombre.

Las variables definidas para cada uno de los objetos se mencionan a continuación:

Esfera: radio, meridiano y paralelo

Toroide: radioInterno, radioExterno, lados y anillos

Cubo: lado

Prisma: lado, apotema y altura

Cono: radio, altura, lados y anillos

Cada una de las clases de los objetos los getters y setters correspondientes además tiene su

método dibuja(), que es el que se manda llamar en objetos3D cuando desde archivo se lee el

objeto y se pueda mostrar en escena.

En la clase Material se definen los materiales que se van asociar con los objetos, y que tienen un

nombre, un modo y los tipos de luces que van a reflejar los materiales como la luz ambiente, difusa

y especular con sus componentes RGB y por ultimo el id de textura y su nivel de transparencia.

En la clase de Textura se definen las variables que tiene como el nombre de la textura, id,

transparencia, expansión o repetición y filtrado . Las texturas estan asociadas a los materiales por

medio de los ids lo que permite dar a los materiales diferentes texturas para tener objetos con

diferente apariencia.

Para la clase de Movimientos la variable que se define es la del tipo de movimiento el cual puede

ser escalamiento, Rotación y traslación que son clases que son una especialización de la clase

movimiento y las cuales tienen sus propias especificaciones que se mencionan a continuación.

class Class Mo...

Esfera

- meridiano: GLfloat

- paralelo: GLfloat

- radio: GLfloat

+ dibuja() : void

+ Esfera(void)

+ ~Esfera(void)

+ Esfera(GLfloat, GLfloat, GLfloat, char*, GLfloat, GLfloat, GLfloat, Material*)

+ getMeridiano() : GLfloat

+ getParalelo() : GLfloat

+ getRadio() : GLfloat

+ setMeridiano(GLfloat) : void

+ setParalelo(GLfloat) : void

+ setRadio(GLfloat) : void

Cubo

- lado: GLfloat

+ Cubo(void)

+ ~Cubo(void)

+ Cubo(GLfloat, char*, GLfloat, GLfloat, GLfloat, Material*)

+ dibuja() : void

+ getLado() : GLfloat

+ setLado(GLfloat) : void

Cono

- altura: GLfloat

- anil los: GLfloat

- lados: GLfloat

- radio: GLfloat

+ base(float, char*) : void

+ Cono(void)

+ ~Cono(void)

+ Cono(GLfloat, GLfloat, GLfloat, GLfloat, char*, GLfloat, GLfloat, GLfloat, Material*)

+ dibuja() : void

+ getAltura() : GLfloat

+ getAnillo() : GLfloat

+ getLados() : GLf loat

+ getRadio() : GLfloat

+ setAltura(GLfloat) : void

+ setAnillos(GLfloat) : void

+ setLados(GLfloat) : void

+ setRadio(GLfloat) : void

Toroide

- anil los: GLfloat

- lados: GLfloat

- radioExterno: GLfloat

- radioInterno: GLfloat

+ dibuja() : void

+ getAnillo() : GLfloat

+ getLados() : GLf loat

+ getRadioEx() : GLfloat

+ getRadioIn() : GLfloat

+ setAnillos(GLfloat) : void

+ setLados(GLfloat) : void

+ setRadioEx(GLfloat) : void

+ setRadioIn(GLfloat) : void

+ Toroide(void)

+ ~Toroide(void)

+ Toroide(GLfloat, GLfloat, GLfloat, GLfloat, char*, GLfloat, GLfloat, GLfloat, Material*)

Prisma

- altura: GLfloat

- apotema: GLfloat

- lado: GLfloat

+ cuerpoPrisma() : void

+ dibuja() : void

+ getAltura() : GLfloat

+ getApotema() : GLfloat

+ getLado() : GLfloat

+ Prisma(void)

+ ~Prisma(void)

+ Prisma(GLfloat, GLfloat, GLfloat, char*, GLfloat, GLfloat, GLfloat, Material*)

+ setAltura(GLfloat) : void

+ setApotema(GLfloat) : void

+ setLado(GLfloat) : void

+ tapa(float) : void

Objetos3D

# iluminado: bool

# material: Material*

+ movs: l ist<Movimiento *>

# nombreObj: char ([400])

+ noMovimiento: int

# tipo: char ([400])

# xIni: GLfloat

# xRot: GLfloat

# yIni: GLfloat

# yRot: GLfloat

# zIni: GLfloat

# zRot: GLfloat

+ addMovimiento(Movimiento*) : void

+ dibuja() : void

+ getIluminado() : bool

+ getMaterial() : Material*

+ getNombreObj() : char *

+ getNoMovimiento() : int

+ getTipo() : char *

+ getXIni() : GLfloat

+ getXRot() : GLfloat

+ getYIni() : GLfloat

+ getYRot() : GLfloat

+ getZIni() : GLfloat

+ getZRot() : GLfloat

+ Objetos3D(void)

+ ~Objetos3D(void)

+ Objetos3D(char*, GLfloat, GLfloat, GLfloat, Material*)

+ posicionInicial() : void

+ setIluminado(bool) : void

+ setMaterial(Material*) : void

+ setNombreObj(char*) : void

+ setNoMovimiento() : void

+ setTipo(char*) : void

+ setXIni(GLfloat) : void

+ setXRot(GLfloat) : void

+ setYIni(GLfloat) : void

+ setYRot(GLfloat) : void

+ setZIni(GLfloat) : void

+ setZRot(GLfloat) : void

Escalar: se definen las variables a escalar en la posición x, y y z.

Rotar: Para esta clase a parte de las variables de posición x,y y z, también necesita velocidad y

ángulo.

Traslación: Para la traslación se definen las variables de velocidad en x, y y z. Esta clase a su vez

tiene la especialización de las clases de Circular, Lineal y Elipse las cuales definen el tipo de

traslación que se va a realizar.

Circular: En esta clase se definen las variables de radio y ángulo que son las

necesarias para la traslación circular de los objetos.

Lineal: En esta clase se definen las variables de la dirección en x, y y z, así como la

velocidad también en x, y y z, necesarias para la traslación lineal.

Elipse: En esta clase se definen las variables de los radios A y B y el ángulo

necesarios para la traslación en elipse.

Dentro de la clase de Escena se están manejando mapas como estructuras dinámicas para

agregar los objetos, materiales, planos, keyframes, luces, movimientos y modelos que

permiten tener un mejor control en cuanto al crecimiento de los objetos manejados, así

como sus iteradores para acceder a cada uno.

Uno de los metodos principales de la clase es el método de guardarObjetos3D que es

donde se lee el archivo de entrada y se va guardando en el mapa correspondiente ya sea un

material, un objeto, un keyframe, una luz o el tipo de traslación que tiene el objeto.

class Class Mo...

Linea l

- drot: GLfloat

- dtran: GLfloat

- xDir: GLfloat

- xVelocidad: GLfloat

- yDir: GLfloat

- yVelocidad: GLfloat

- zDir: GLfloat

- zVelocidad: GLfloat

+ ejecutaMovimiento(GLfloat) : void

+ getXDir() : GLfloat

+ getXVelocidad() : GLfloat

+ getYDir() : GLfloat

+ getYVelocidad() : GLfloat

+ getZDir() : GLfloat

+ getZVelocidad() : GLfloat

+ Lineal(void)

+ ~Lineal(void)

+ setXDir(GLfloat) : void

+ setXVelocidad(GLfloat) : void

+ setYDir(GLfloat) : void

+ setYVelocidad(GLfloat) : void

+ setZDir(GLfloat) : void

+ setZVelocidad(GLfloat) : void

Escala r

- xs: GLfloat

- ys: GLfloat

- zs: GLfloat

+ ejecutaMovimiento(GLfloat) : void

+ Escalar(void)

+ ~Escalar(void)

+ Escalar(GLfloat, GLfloat, GLfloat)

+ getXs() : GLf loat

+ getYs() : GLf loat

+ getZs() : GLf loat

+ setXs(GLfloat) : void

+ setYs(GLfloat) : void

+ setZs(GLfloat) : void

Elips e

- angulo: GLfloat

- radioA: GLfloat

- radioB: GLfloat

+ Elipse(void)

+ ~Elipse(void)

+ getAngulo() : GLfloat

+ getRadioA() : GLfloat

+ getRadioB() : GLfloat

+ setAngulo(GLfloat) : void

+ setRadioA(GLfloat) : void

+ setRadioB(GLfloat) : void

Circula r

- angulo: GLfloat

- radio: GLfloat

+ Circular(void)

+ ~Circular(void)

+ ejecutaTraslacionCircular() : void

+ getAngulo() : GLfloat

+ getRadio() : GLfloat

+ setAngulo(GLfloat) : void

+ setRadio(GLfloat) : void

Rota r

- angulo: GLfloat

- coordenada: char

- velocidad: GLfloat

- x: GLfloat

- y: GLfloat

- z: GLfloat

+ ejecutaMovimiento(GLfloat) : void

+ getAngulo() : GLfloat

+ getCoordenada() : GLfloat

+ getVelocidad() : GLfloat

+ getX() : GLfloat

+ getY() : GLfloat

+ getZ() : GLfloat

+ Rotar(void)

+ ~Rotar(void)

+ Rotar(GLfloat, GLfloat, char)

+ setAngulo(GLfloat) : void

+ setCoordenada(GLfloat) : void

+ setVelocidad(GLfloat) : void

+ setX(GLfloat) : void

+ setY(GLfloat) : void

+ setZ(GLfloat) : void

Traslacion

- tipoTraslacion: char ([150])

- xVelocidad: GLfloat

- yVelocidad: GLfloat

- zVelocidad: GLfloat

+ getTipoTraslacion() : char*

+ getXVelocidad() : GLfloat

+ getYVelocidad() : GLfloat

+ getZVelocidad() : GLfloat

+ setTipoTraslacion(char*) : void

+ setXVelocidad(GLfloat) : void

+ setYVelocidad(GLfloat) : void

+ setZVelocidad(GLfloat) : void

+ Traslacion(void)

+ ~Traslacion(void)

Mov imiento

- tipoMovimiento: char ([400])

+ getTipoMovimiento() : char*

+ Movimiento(void)

+ ~Movimiento(void)

+ setTipoMovimiento(char*) : void

Otros métodos dentro de la clase son:

cargaModels(): que permite cargar los modelos.

esNullModel(float angulo): con este método se verifica si el modelo no es NULL.

ponLucesEscena: El método permite agregar las luces a la escena.

movimientos(float angulo): el método permite sacar los movimientos y asignarlos a los

objetos que esten definidos en el archivo. Por ejemplo si es Cono y tiene movimiento de

escalamiento o rotación o traslación circular o lineal.

creaMapaTexturas(): este método lee el archivo de texturas y va guardando el tipo de

textura que tiene y sus distintas opciones como la transparencia, y la expansión o repetición

y el tipo de filtrado.

loadTexture(): Es un método de la librería de corona que permite el manejo de las texturas.

cargaTexturas(): permite cargar las texturas.

Diagrama de clases

class Class Mo...

Linea l

- drot: GLfloat

- dtran: GLfloat

- xDir: GLfloat

- xVelocidad: GLfloat

- yDir: GLfloat

- yVelocidad: GLfloat

- zDir: GLfloat

- zVelocidad: GLfloat

+ ejecutaMovimiento(GLfloat) : void

+ getXDir() : GLfloat

+ getXVelocidad() : GLfloat

+ getYDir() : GLfloat

+ getYVelocidad() : GLfloat

+ getZDir() : GLfloat

+ getZVelocidad() : GLfloat

+ Lineal(void)

+ ~Lineal(void)

+ setXDir(GLfloat) : void

+ setXVelocidad(GLfloat) : void

+ setYDir(GLfloat) : void

+ setYVelocidad(GLfloat) : void

+ setZDir(GLfloat) : void

+ setZVelocidad(GLfloat) : void

LuzAmbiental

+ ilumina() : void

+ LuzAmbiental(void)

+ ~LuzAmbiental(void)

LuzPointLight

- xPosIni: GLfloat

- yPosIni: GLfloat

- zPosIni: GLfloat

+ getXPosIni() : GLfloat

+ getYPosIni() : GLfloat

+ getZPosIni() : GLfloat

+ ilumina() : void

+ LuzPointLight(void)

+ ~LuzPointLight(void)

+ setXPosIni(GLfloat) : void

+ setYPosIni(GLfloat) : void

+ setZPosIni(GLfloat) : void

Esfera

- meridiano: GLfloat

- paralelo: GLfloat

- radio: GLfloat

+ dibuja() : void

+ Esfera(void)

+ ~Esfera(void)

+ Esfera(GLfloat, GLfloat, GLfloat, char*, GLfloat, GLfloat, GLfloat, Material*)

+ getMeridiano() : GLfloat

+ getParalelo() : GLfloat

+ getRadio() : GLfloat

+ setMeridiano(GLfloat) : void

+ setParalelo(GLfloat) : void

+ setRadio(GLfloat) : voidEscala r

- xs: GLfloat

- ys: GLfloat

- zs: GLfloat

+ ejecutaMovimiento(GLfloat) : void

+ Escalar(void)

+ ~Escalar(void)

+ Escalar(GLfloat, GLfloat, GLfloat)

+ getXs() : GLf loat

+ getYs() : GLf loat

+ getZs() : GLf loat

+ setXs(GLfloat) : void

+ setYs(GLfloat) : void

+ setZs(GLfloat) : void

Elips e

- angulo: GLfloat

- radioA: GLfloat

- radioB: GLfloat

+ Elipse(void)

+ ~Elipse(void)

+ getAngulo() : GLfloat

+ getRadioA() : GLfloat

+ getRadioB() : GLfloat

+ setAngulo(GLfloat) : void

+ setRadioA(GLfloat) : void

+ setRadioB(GLfloat) : void

Cubo

- lado: GLfloat

+ Cubo(void)

+ ~Cubo(void)

+ Cubo(GLfloat, char*, GLfloat, GLfloat, GLfloat, Material*)

+ dibuja() : void

+ getLado() : GLfloat

+ setLado(GLfloat) : void

Cono

- altura: GLfloat

- anillos: GLfloat

- lados: GLfloat

- radio: GLfloat

+ base(float, char*) : void

+ Cono(void)

+ ~Cono(void)

+ Cono(GLfloat, GLfloat, GLfloat, GLfloat, char*, GLfloat, GLfloat, GLfloat, Material*)

+ dibuja() : void

+ getAltura() : GLfloat

+ getAnillo() : GLfloat

+ getLados() : GLf loat

+ getRadio() : GLfloat

+ setAltura(GLfloat) : void

+ setAnillos(GLfloat) : void

+ setLados(GLfloat) : void

+ setRadio(GLfloat) : void

Circula r

- angulo: GLfloat

- radio: GLfloat

+ Circular(void)

+ ~Circular(void)

+ ejecutaTraslacionCircular() : void

+ getAngulo() : GLfloat

+ getRadio() : GLfloat

+ setAngulo(GLfloat) : void

+ setRadio(GLfloat) : void

Plano

- material: Material*

- tipoPlano: char ([400])

- v1x: GLfloat

- v1y: GLfloat

- v1z: GLfloat

- v2x: GLfloat

- v2y: GLfloat

- v2z: GLfloat

- v3x: GLfloat

- v3y: GLfloat

- v3z: GLfloat

- v4x: GLfloat

- v4y: GLfloat

- v4z: GLfloat

+ dibujaPlano() : void

+ getMaterial() : Material*

+ getTipoPlano() : char*

+ getV1x() : GLfloat

+ getV1y() : GLfloat

+ getV1z() : GLfloat

+ getV2x() : GLfloat

+ getV2y() : GLfloat

+ getV2z() : GLfloat

+ getV3x() : GLfloat

+ getV3y() : GLfloat

+ getV3z() : GLfloat

+ getV4x() : GLfloat

+ getV4y() : GLfloat

+ getV4z() : GLfloat

+ Plano(void)

+ ~Plano(void)

+ setMaterial(Material*) : void

+ setTipoPlano(char*) : void

+ setV1x(GLfloat) : void

+ setV1y(GLfloat) : void

+ setV1z(GLfloat) : void

+ setV2x(GLfloat) : void

+ setV2y(GLfloat) : void

+ setV2z(GLfloat) : void

+ setV3x(GLfloat) : void

+ setV3y(GLfloat) : void

+ setV3z(GLfloat) : void

+ setV4x(GLfloat) : void

+ setV4y(GLfloat) : void

+ setV4z(GLfloat) : void

Toroide

- anillos: GLfloat

- lados: GLfloat

- radioExterno: GLfloat

- radioInterno: GLfloat

+ dibuja() : void

+ getAnillo() : GLfloat

+ getLados() : GLf loat

+ getRadioEx() : GLfloat

+ getRadioIn() : GLfloat

+ setAnillos(GLfloat) : void

+ setLados(GLfloat) : void

+ setRadioEx(GLfloat) : void

+ setRadioIn(GLfloat) : void

+ Toroide(void)

+ ~Toroide(void)

+ Toroide(GLfloat, GLfloat, GLfloat, GLfloat, char*, GLfloat, GLfloat, GLfloat, Material*)

Tex tura

+ idText: GLuint

+ mag: int

+ min: int

+ mipmaps: bool

+ nomArch: char ([100])

+ nomText: char ([50])

+ sModo: int

+ tModo: int

+ transp: int

+ getIdText() : GLuint

+ getMag() : int

+ getMin() : int

+ getMipmaps() : bool

+ getNomArch() : char*

+ getNomText() : char *

+ getSModo() : int

+ getTModo() : int

+ getTransp() : int

+ setIdText(GLfloat) : void

+ setMag(int) : void

+ setMin(int) : void

+ setMipmaps(bool) : void

+ setNomArch(char*) : void

+ setNomText(char*) : void

+ setSModo(int) : void

+ setTModo(int) : void

+ setTransp(int) : void

+ Textura(void)

+ ~Textura(void)

Rota r

- angulo: GLfloat

- coordenada: char

- velocidad: GLfloat

- x: GLfloat

- y: GLfloat

- z: GLfloat

+ ejecutaMovimiento(GLfloat) : void

+ getAngulo() : GLfloat

+ getCoordenada() : GLfloat

+ getVelocidad() : GLfloat

+ getX() : GLfloat

+ getY() : GLfloat

+ getZ() : GLfloat

+ Rotar(void)

+ ~Rotar(void)

+ Rotar(GLfloat, GLfloat, char)

+ setAngulo(GLfloat) : void

+ setCoordenada(GLfloat) : void

+ setVelocidad(GLfloat) : void

+ setX(GLfloat) : void

+ setY(GLfloat) : void

+ setZ(GLfloat) : void

Luz

- ambA: GLfloat

- ambB: GLfloat

- ambG: GLfloat

- ambR: GLfloat

- bril lo: GLfloat

- bril loEsp: GLfloat

- disA: GLfloat

- disB: GLfloat

- disG: GLfloat

- disR: GLfloat

- emiA: GLfloat

- emiB: GLfloat

- emiG: GLfloat

- emiR: GLfloat

- espA: GLf loat

- espB: GLf loat

- espG: GLf loat

- espR: GLf loat

- modoLocalViewer: bool

- modoTwoSide: bool

- nomLuz: char ([300])

- tipoLuz: char ([300])

+ getAmbA() : GLfloat

+ getAmbB() : GLfloat

+ getAmbG() : GLfloat

+ getAmbR() : GLfloat

+ getBril loEsp() : GLfloat

+ getDisA() : GLfloat

+ getDisB() : GLfloat

+ getDisG() : GLfloat

+ getDisR() : GLfloat

+ getEmiA() : GLfloat

+ getEmiB() : GLfloat

+ getEmiG() : GLfloat

+ getEmiR() : GLfloat

+ getEspA() : GLf loat

+ getEspB() : GLf loat

+ getEspG() : GLf loat

+ getEspR() : GLf loat

+ getModoLocalViewer() : bool

+ getModoTwoSide() : bool

+ getNomLuz() : char*

+ getTipoLuz() : char*

+ ilumina() : void

+ Luz(void)

+ ~Luz(void)

+ setAmbA(GLfloat) : void

+ setAmbB(GLfloat) : void

+ setAmbG(GLfloat) : void

+ setAmbR(GLfloat) : void

+ setBril loEsp(GLfloat) : void

+ setDisA(GLfloat) : void

+ setDisB(GLfloat) : void

+ setDisG(GLfloat) : void

+ setDisR(GLfloat) : void

+ setEmiA(GLfloat) : void

+ setEmiB(GLfloat) : void

+ setEmiG(GLfloat) : void

+ setEmiR(GLfloat) : void

+ setEspA(GLfloat) : void

+ setEspB(GLfloat) : void

+ setEspG(GLfloat) : void

+ setEspR(GLfloat) : void

+ setModoLocalViewer(bool) : void

+ setModoTwoSide(bool) : void

+ setNomLuz(char*) : void

+ setTipoLuz(char*) : void

Prisma

- altura: GLfloat

- apotema: GLfloat

- lado: GLfloat

+ cuerpoPrisma() : void

+ dibuja() : void

+ getAltura() : GLfloat

+ getApotema() : GLfloat

+ getLado() : GLfloat

+ Prisma(void)

+ ~Prisma(void)

+ Prisma(GLfloat, GLfloat, GLfloat, char*, GLfloat, GLfloat, GLfloat, Material*)

+ setAltura(GLfloat) : void

+ setApotema(GLfloat) : void

+ setLado(GLfloat) : void

+ tapa(float) : void

Traslacion

- tipoTraslacion: char ([150])

- xVelocidad: GLfloat

- yVelocidad: GLfloat

- zVelocidad: GLfloat

+ getTipoTraslacion() : char*

+ getXVelocidad() : GLfloat

+ getYVelocidad() : GLfloat

+ getZVelocidad() : GLfloat

+ setTipoTraslacion(char*) : void

+ setXVelocidad(GLfloat) : void

+ setYVelocidad(GLfloat) : void

+ setZVelocidad(GLfloat) : void

+ Traslacion(void)

+ ~Traslacion(void)

Objetos3D

# iluminado: bool

# material: Material*

+ movs: l ist<Movimiento *>

# nombreObj: char ([400])

+ noMovimiento: int

# tipo: char ([400])

# xIni: GLfloat

# xRot: GLfloat

# yIni: GLfloat

# yRot: GLfloat

# zIni: GLfloat

# zRot: GLfloat

+ addMovimiento(Movimiento*) : void

+ dibuja() : void

+ getIluminado() : bool

+ getMaterial() : Material*

+ getNombreObj() : char *

+ getNoMovimiento() : int

+ getTipo() : char *

+ getXIni() : GLfloat

+ getXRot() : GLfloat

+ getYIni() : GLfloat

+ getYRot() : GLfloat

+ getZIni() : GLfloat

+ getZRot() : GLfloat

+ Objetos3D(void)

+ ~Objetos3D(void)

+ Objetos3D(char*, GLfloat, GLfloat, GLfloat, Material*)

+ posicionInicial() : void

+ setIluminado(bool) : void

+ setMaterial(Material*) : void

+ setNombreObj(char*) : void

+ setNoMovimiento() : void

+ setTipo(char*) : void

+ setXIni(GLfloat) : void

+ setXRot(GLfloat) : void

+ setYIni(GLfloat) : void

+ setYRot(GLfloat) : void

+ setZIni(GLfloat) : void

+ setZRot(GLfloat) : void

Mov imiento

- tipoMovimiento: char ([400])

+ getTipoMovimiento() : char*

+ Movimiento(void)

+ ~Movimiento(void)

+ setTipoMovimiento(char*) : void

Modelo

- contMT: MatTexts

- itmt: MatTexts::iterator

- modelo: GLMmodel*

- nomMatAso: char ([100])

- numero: int

- ruta: char ([4 00])

+ cargaModelo(int, Material*) : void

+ dibuja() : void

+ generaModeloArchivo(char*) : void

+ getModelo() : GLMmodel*

+ getNomMatAso() : char *

+ getNumero() : int

+ getRuta() : char *

+ Modelo(void)

+ ~Modelo(void)

+ regresaMatModeloAleatorio() : int

+ setContMT(char*, int) : void

+ setModelo(GLMmodel*) : void

+ setNomMatAso(char*) : void

+ setNumero(int) : void

+ setRuta(char*) : void

Material

# ambA: GLfloat

# ambB: GLfloat

# ambG: GLfloat

# ambR: GLfloat

# b: GLfloat

# bril loEsp: GLfloat

# disA: GLfloat

# disB: GLfloat

# disG: GLfloat

# disR: GLfloat

# emiA: GLfloat

# emiB: GLfloat

# emiG: GLfloat

# emiR: GLfloat

# espA: GLf loat

# espB: GLf loat

# espG: GLf loat

# espR: GLf loat

# g: GLfloat

# idTextAso: GLuint

# modo: char ([300])

# nivelTransp: GLfloat

# nombre: char ([300])

# r: GLfloat

+ getAmbA() : GLfloat

+ getAmbB() : GLfloat

+ getAmbG() : GLfloat

+ getAmbR() : GLfloat

+ getB() : GLfloat

+ getBril loEsp() : GLfloat

+ getDisA() : GLfloat

+ getDisB() : GLfloat

+ getDisG() : GLfloat

+ getDisR() : GLfloat

+ getEmiA() : GLfloat

+ getEmiB() : GLfloat

+ getEmiG() : GLfloat

+ getEmiR() : GLfloat

+ getEspA() : GLf loat

+ getEspB() : GLf loat

+ getEspG() : GLf loat

+ getEspR() : GLf loat

+ getG() : GLfloat

+ getIdTextAso() : GLuint

+ getModo() : char *

+ getNivelTransp() : GLfloat

+ getNombre() : char *

+ getR() : GLfloat

+ iluminaAmbiente() : void

+ iluminaBril lo() : void

+ iluminaDifusa() : void

+ iluminaEmitida() : void

+ iluminaEspecular() : void

+ Material(void)

+ ~Material(void)

+ setAmbA(GLfloat) : void

+ setAmbB(GLfloat) : void

+ setAmbG(GLfloat) : void

+ setAmbR(GLfloat) : void

+ setB(GLfloat) : void

+ setBril loEsp(GLfloat) : void

+ setDisA(GLfloat) : void

+ setDisB(GLfloat) : void

+ setDisG(GLfloat) : void

+ setDisR(GLfloat) : void

+ setEmiA(GLfloat) : void

+ setEmiB(GLfloat) : void

+ setEmiG(GLfloat) : void

+ setEmiR(GLfloat) : void

+ setEspA(GLfloat) : void

+ setEspB(GLfloat) : void

+ setEspG(GLfloat) : void

+ setEspR(GLfloat) : void

+ setG(GLfloat) : void

+ setIdTextAso(GLuint) : void

+ setModo(char*) : void

+ setNivelTransp(GLfloat) : void

+ setNombre(char*) : void

+ setR(GLfloat) : void

LuzSpotLight

- angulo: GLfloat

- xDir: GLfloat

- xPosIni: GLfloat

- yDir: GLfloat

- yPosIni: GLfloat

- zDir: GLfloat

- zPosIni: GLfloat

+ getAngulo() : GLfloat

+ getXDir() : GLfloat

+ getXPosIni() : GLfloat

+ getYDir() : GLfloat

+ getYPosIni() : GLfloat

+ getZDir() : GLfloat

+ getZPosIni() : GLfloat

+ ilumina() : void

+ LuzSpotLight(void)

+ ~LuzSpotLight(void)

+ setAngulo(GLfloat) : void

+ setXDir(GLfloat) : void

+ setXPosIni(GLfloat) : void

+ setYDir(GLfloat) : void

+ setYPosIni(GLfloat) : void

+ setZDir(GLfloat) : void

+ setZPosIni(GLfloat) : void

Escena

- ambiente: boolean

- currHeight: int

- currWidth: int

- espe: boolean

- fovy: GLfloat

- fps: float

- frametime: int

- pause: bool

- perspectiva: bool

- range: GLfloat

- reverse: bool

- spot: boolean

- xr: GLfloat

- xrotview: int

- xs: GLfloat

- xt: GLfloat

- xView: int

- yr: GLfloat

- yrotview: int

- ys: GLfloat

- yt: GLfloat

- yview: int

- zr: GLfloat

- zrotview: int

- zs: GLfloat

- zt: GLfloat

- zview: int

+ camera() : void

+ cargaModels() : void

+ cargaTexturas() : void

+ creaMapaTexturas() : void

+ drawtriangle() : void

+ esNullModel() : void

+ guardarObjetos3D() : void

+ idle() : void

+ ilumina() : void

+ imprimeTexturas() : void

+ init(int, int, int, int, char*) : void

+ keyboard(unsigned char, int, int) : void

+ keyboardSpec(int, int, int) : void

+ loadTexture() : GLunit

+ main() : void

+ mouseMovement(int, int) : void

+ movimientos() : void

+ normalize() : void

+ plano() : void

+ ponLucesEscena() : void

+ redimensiona(int, int) : void

+ regresaMaterialAleatorio() : Material

+ render() : void

openGLcorona

1

0..*

1

1.. *

0..*

1

0..*

0..*

0..*0..*

#material

-material

1

0..*

Diagrama de Despliegue

En el siguiente diagrama se muestra la forma en la que dentro del dispositivo interactúan el

CPU y el GPU que es la tarjeta gráfica y son de estos componentes que dependen todas las

clases que en conjunto generan la escena.