Este documento introduce conceptos básicos de OpenGL como la definición de objetos, luces, cámara y ventanas de visualización. Explica el modelo de programación de OpenGL y conceptos clave como proyecciones, matrices y su uso para transformaciones. Luego, cubre OpenGL 2D para dibujar triángulos, modificar colores, texturas e insertar transformaciones. Finalmente, menciona brevemente las principales diferencias entre OpenGL 2D y 3D.
Este programa en lenguaje ensamblador calcula la serie de Fibonacci almacenando los valores en la memoria y sumando el valor actual con el siguiente. Primero inicializa los primeros dos valores en la memoria y luego en cada iteración suma el valor actual con el siguiente, incrementa el puntero de memoria y almacena el nuevo valor.
Este documento proporciona instrucciones y ejemplos sobre el uso de interrupciones, instrucciones y funciones básicas en ensamblador como imprimir cadenas y caracteres, manejo del cursor, lectura de teclado, color, scroll y bucles. También incluye ejemplos de programas en ensamblador y reglas para la presentación de proyectos.
Este documento describe cómo medir el tiempo de ejecución de un algoritmo. Explica que existen dos formas de medirlo: a posteriori y a priori. También presenta cuatro algoritmos y calcula su orden de magnitud utilizando el contador de frecuencias. El orden de magnitud indica la eficiencia de un algoritmo y puede ser constante, lineal, cuadrático u otros.
El documento describe los conceptos fundamentales detrás del desarrollo de componentes visuales, incluyendo propiedades, eventos, persistencia y extensión de controles. También discute los beneficios del desarrollo basado en componentes como la reutilización de software y reducción de costos en comparación con el desarrollo de software a medida.
Este documento presenta un curso introductorio sobre OpenGL. Explica conceptos básicos de OpenGL y su uso en Linux, incluyendo cómo instalar las librerías necesarias. Contiene capítulos sobre transformaciones, animación, iluminación y texturas, con ejemplos de código. El objetivo es proporcionar una guía práctica para aprender los fundamentos de la programación 3D con OpenGL.
Introducción a la Arquitectura de Software.
Géneros Arquitectónicas
Estilos Arquitectónicos.
Diseño Arquitectónico.
Evaluación de los diseños alternativos para la Arquitectura.
Este documento describe el algoritmo de búsqueda primero el mejor. Selecciona el nodo a expandir basado en una función de evaluación que devuelve un número representando lo deseable que sería expandir ese nodo. Expanda primero el nodo con la mejor evaluación. Aplica una función heurística h(n) que estima el costo mínimo desde un nodo a la meta. El ejemplo ilustra cómo el algoritmo expande nodos basándose en los valores h(n), encontrando la ruta óptima de costo 140 desde S0 a S8.
1. El documento presenta varios ejemplos y propiedades de expresiones regulares y autómatas finitos.
2. Incluye 17 propiedades de expresiones regulares, ejemplos de operaciones con lenguajes y expresiones regulares, y la descripción de un autómata finito.
3. Finalmente, propone un ejemplo de construcción del diagrama de Moore a partir de una tabla de transiciones de un autómata finito.
Este programa en lenguaje ensamblador calcula la serie de Fibonacci almacenando los valores en la memoria y sumando el valor actual con el siguiente. Primero inicializa los primeros dos valores en la memoria y luego en cada iteración suma el valor actual con el siguiente, incrementa el puntero de memoria y almacena el nuevo valor.
Este documento proporciona instrucciones y ejemplos sobre el uso de interrupciones, instrucciones y funciones básicas en ensamblador como imprimir cadenas y caracteres, manejo del cursor, lectura de teclado, color, scroll y bucles. También incluye ejemplos de programas en ensamblador y reglas para la presentación de proyectos.
Este documento describe cómo medir el tiempo de ejecución de un algoritmo. Explica que existen dos formas de medirlo: a posteriori y a priori. También presenta cuatro algoritmos y calcula su orden de magnitud utilizando el contador de frecuencias. El orden de magnitud indica la eficiencia de un algoritmo y puede ser constante, lineal, cuadrático u otros.
El documento describe los conceptos fundamentales detrás del desarrollo de componentes visuales, incluyendo propiedades, eventos, persistencia y extensión de controles. También discute los beneficios del desarrollo basado en componentes como la reutilización de software y reducción de costos en comparación con el desarrollo de software a medida.
Este documento presenta un curso introductorio sobre OpenGL. Explica conceptos básicos de OpenGL y su uso en Linux, incluyendo cómo instalar las librerías necesarias. Contiene capítulos sobre transformaciones, animación, iluminación y texturas, con ejemplos de código. El objetivo es proporcionar una guía práctica para aprender los fundamentos de la programación 3D con OpenGL.
Introducción a la Arquitectura de Software.
Géneros Arquitectónicas
Estilos Arquitectónicos.
Diseño Arquitectónico.
Evaluación de los diseños alternativos para la Arquitectura.
Este documento describe el algoritmo de búsqueda primero el mejor. Selecciona el nodo a expandir basado en una función de evaluación que devuelve un número representando lo deseable que sería expandir ese nodo. Expanda primero el nodo con la mejor evaluación. Aplica una función heurística h(n) que estima el costo mínimo desde un nodo a la meta. El ejemplo ilustra cómo el algoritmo expande nodos basándose en los valores h(n), encontrando la ruta óptima de costo 140 desde S0 a S8.
1. El documento presenta varios ejemplos y propiedades de expresiones regulares y autómatas finitos.
2. Incluye 17 propiedades de expresiones regulares, ejemplos de operaciones con lenguajes y expresiones regulares, y la descripción de un autómata finito.
3. Finalmente, propone un ejemplo de construcción del diagrama de Moore a partir de una tabla de transiciones de un autómata finito.
Este documento presenta un ejercicio de programación orientada a objetos que involucra la herencia y el polimorfismo. Se pide crear una jerarquía de clases para modelar loros, profesores y alumnos, donde cada clase herede de la clase Loro y contenga un método habla(). Se provee el código completo de la solución con las clases Loro, Alumno y Profesor.
Java Swing y AWT son dos frameworks para desarrollar interfaces gráficas de usuario en Java. AWT es más antiguo y depende de componentes nativos, mientras que Swing está completamente escrito en Java y no depende de la plataforma. Swing se creó para solucionar las limitaciones de AWT y ofrece una interfaz más potente, flexible y basada en componentes GUI.
Este documento presenta una introducción al Proceso Racional Unificado (RUP) como metodología de desarrollo de software. Explica que RUP permite el desarrollo de software a gran escala a través de un proceso iterativo e incremental que garantiza la calidad. Luego describe algunas características clave como su enfoque disciplinado, la administración de requisitos y el uso de UML. Finalmente resume las cuatro fases del modelo RUP: Inicio, Elaboración, Construcción y Transición.
El documento presenta un problema sobre herencia en el que se debe crear una clase Empleado y una subclase Programador. Se definen los atributos y métodos de cada clase, incluyendo constructores. Se crea un objeto de la clase Programador y se muestran sus datos, incluyendo un aumento de salario.
Las instrucciones DIV e IDIV se usan para realizar divisiones en ensamblador, donde DIV maneja datos sin signo y IDIV maneja datos con signo. La instrucción NEG invierte el signo de un número binario de positivo a negativo o viceversa cambiando los bits y sumando uno.
Este documento presenta conceptos básicos sobre árboles y grafos, incluyendo definiciones, representaciones, recorridos y métodos de búsqueda como profundidad primero, anchura primero y heurística. Explica cómo reconstruir un árbol binario a partir de sus recorridos y cómo aplicar búsqueda en profundidad para recorrer un grafo de manera sistemática.
Detonando la arquitectura del software con C4Software Guru
En esta plática explicaremos el modelo C4 y compartiremos las experiencias que hemos tenido al aplicar este modelo en proyectos reales.
Por: Rodrigo Rodríguez
Este documento presenta información sobre autómatas finitos determinísticos (AFD) y no determinísticos (AFND). Define un autómata finito como una 5-tupla que describe sus estados, alfabeto, estado inicial, función de transición y estados de aceptación. Explica las diferencias entre AFD y AFND y provee ejemplos de cada uno. También cubre la equivalencia y minimización de autómatas finitos.
Tipos de búsqueda en inteligencia artificialHenry Cambal
Este documento resume los diferentes tipos de técnicas de búsqueda en inteligencia artificial, incluyendo: (1) búsqueda ciega como búsqueda en amplitud, profundidad y bidireccional, (2) búsqueda heurística y funciones de evaluación, y (3) búsqueda con adversarios como el algoritmo MINIMAX y poda Alfa-Beta. Explica los elementos clave de cada técnica de búsqueda y sus ventajas e inconvenientes.
El documento describe los grafos, incluyendo su definición, tipos (orientados y no orientados), operaciones como adyacencia e incidencia, y formas de representarlos mediante matrices de adyacencia. También presenta ejemplos de grafos ponderados y cómo modelar problemas como el del agente viajero usando grafos. Finalmente, muestra código C++ para implementar una representación secuencial de grafos mediante listas y matrices.
El documento describe el Proceso de Software Personal (PSP), un marco de trabajo desarrollado por Watts Humphrey para mejorar la calidad y productividad individual de los ingenieros de software. El PSP se enfoca en la planificación, diseño, revisión, desarrollo y análisis de resultados de pequeños proyectos de software de manera personal y disciplinada. El PSP ofrece cinco niveles progresivos para medir y mejorar continuamente el proceso individual de desarrollo de software.
Este documento presenta un manual de programación en lenguaje C. Explica conceptos básicos como hardware, software y lenguajes de programación. Luego introduce el lenguaje C, describiendo sus características y ventajas. Finalmente, explica la estructura básica de un programa en C, incluyendo directivas, funciones, variables y tipos de errores.
El documento describe la historia de los procesadores utilizados en las computadoras Mac de Apple, desde Motorola hasta Intel, y las capas del sistema operativo Mac OS X, incluyendo las aplicaciones Cocoa, Carbon y Java, así como las tecnologías subyacentes Darwin, Aqua, Quartz, OpenGL, QuickTime, Core Video y Core Audio. Explica brevemente el propósito de cada capa y tecnología para proveer gráficos, multimedia, compatibilidad multiplataforma y funcionalidad básica en Mac OS X.
El documento describe un proyecto para implementar un sistema de comercio electrónico para una empresa de confecciones usando la plataforma de código abierto nopCommerce. La empresa busca expandir sus canales de ventas online para captar nuevos mercados. NopCommerce satisfaría los objetivos de la empresa al proporcionar una tienda online escalable, segura y con funciones como gestión de pedidos, inventario, pagos y envíos.
Estructuras iterativas en java y pseudocódigoAlex Cordova
Breve exposición sobre las estructuras iterativas; while, for, do-while.
Incluyo su investigación por si gustan consultarla.
https://www.dropbox.com/s/d59lpwk9k5e2d4o/Investigacion%20-%20Iteraciones.docx?dl=0
Contadores
Acomuladores
Centinela o bandera
For
WHILE
Do while
Desde una perspectiva en java y pseudocódigo
Este documento trata sobre agentes inteligentes. Define un agente inteligente como un sistema capaz de percibir su entorno y actuar sobre él de forma autónoma para lograr metas deseadas por el usuario. Explica que los agentes inteligentes se enmarcan dentro del enfoque de sistemas que actúan racionalmente basándose en percepciones. También incluye un mapa conceptual sobre agentes inteligentes y un ejemplo de análisis PAMA (Percepciones, Acciones, Metas y Ambiente) de un sistema de monitoreo de ritmos cardí
Este documento proporciona una introducción a la programación lógica en Prolog. Explica conceptos básicos como hechos, reglas y consultas, y sintaxis básica. También cubre temas como aritmética, átomos, recursividad, listas, negación y la conexión de Prolog con MySQL.
Este documento presenta una guía para el examen diagnóstico de programación utilizando el programa PSeInt. Explica brevemente qué es PSeInt, describe su interfaz y área de trabajo. Luego, introduce conceptos clave como el pseudocódigo, tipos de datos, expresiones, estructuras de control y ejemplos resueltos de algoritmos en pseudocódigo.
El documento contiene 15 consultas SQL de ejercicios resueltos sobre tablas de autores, estudiantes, libros y préstamos. Las consultas incluyen seleccionar datos, filtrar por condiciones como nombres, áreas y fechas, y realizar cálculos como sumas y promedios.
Este documento presenta un manual de prácticas sobre el uso de software de diseño para el manejo de gráficos. Incluye investigación sobre OpenGL, código para crear varias figuras geométricas como un tablero de ajedrez, una estrella, un cubo con líneas y uno delineado, y explica cómo configurar OpenGL en Dev C++. El manual proporciona código y explicaciones detalladas para crear diferentes objetos 2D y 3D usando funciones de OpenGL.
Introducción a las librerías PyGame y PyOpenGLkdeespana
Este documento presenta una introducción al uso de las librerías Pygame y PyOpenGL en Python para crear gráficos 2D y 3D. Explica cómo instalar estas librerías, sus funciones principales, y proporciona un ejemplo básico de código para inicializar Pygame, definir shaders y dibujar una escena 3D simple con un cuadrado.
Este documento presenta un ejercicio de programación orientada a objetos que involucra la herencia y el polimorfismo. Se pide crear una jerarquía de clases para modelar loros, profesores y alumnos, donde cada clase herede de la clase Loro y contenga un método habla(). Se provee el código completo de la solución con las clases Loro, Alumno y Profesor.
Java Swing y AWT son dos frameworks para desarrollar interfaces gráficas de usuario en Java. AWT es más antiguo y depende de componentes nativos, mientras que Swing está completamente escrito en Java y no depende de la plataforma. Swing se creó para solucionar las limitaciones de AWT y ofrece una interfaz más potente, flexible y basada en componentes GUI.
Este documento presenta una introducción al Proceso Racional Unificado (RUP) como metodología de desarrollo de software. Explica que RUP permite el desarrollo de software a gran escala a través de un proceso iterativo e incremental que garantiza la calidad. Luego describe algunas características clave como su enfoque disciplinado, la administración de requisitos y el uso de UML. Finalmente resume las cuatro fases del modelo RUP: Inicio, Elaboración, Construcción y Transición.
El documento presenta un problema sobre herencia en el que se debe crear una clase Empleado y una subclase Programador. Se definen los atributos y métodos de cada clase, incluyendo constructores. Se crea un objeto de la clase Programador y se muestran sus datos, incluyendo un aumento de salario.
Las instrucciones DIV e IDIV se usan para realizar divisiones en ensamblador, donde DIV maneja datos sin signo y IDIV maneja datos con signo. La instrucción NEG invierte el signo de un número binario de positivo a negativo o viceversa cambiando los bits y sumando uno.
Este documento presenta conceptos básicos sobre árboles y grafos, incluyendo definiciones, representaciones, recorridos y métodos de búsqueda como profundidad primero, anchura primero y heurística. Explica cómo reconstruir un árbol binario a partir de sus recorridos y cómo aplicar búsqueda en profundidad para recorrer un grafo de manera sistemática.
Detonando la arquitectura del software con C4Software Guru
En esta plática explicaremos el modelo C4 y compartiremos las experiencias que hemos tenido al aplicar este modelo en proyectos reales.
Por: Rodrigo Rodríguez
Este documento presenta información sobre autómatas finitos determinísticos (AFD) y no determinísticos (AFND). Define un autómata finito como una 5-tupla que describe sus estados, alfabeto, estado inicial, función de transición y estados de aceptación. Explica las diferencias entre AFD y AFND y provee ejemplos de cada uno. También cubre la equivalencia y minimización de autómatas finitos.
Tipos de búsqueda en inteligencia artificialHenry Cambal
Este documento resume los diferentes tipos de técnicas de búsqueda en inteligencia artificial, incluyendo: (1) búsqueda ciega como búsqueda en amplitud, profundidad y bidireccional, (2) búsqueda heurística y funciones de evaluación, y (3) búsqueda con adversarios como el algoritmo MINIMAX y poda Alfa-Beta. Explica los elementos clave de cada técnica de búsqueda y sus ventajas e inconvenientes.
El documento describe los grafos, incluyendo su definición, tipos (orientados y no orientados), operaciones como adyacencia e incidencia, y formas de representarlos mediante matrices de adyacencia. También presenta ejemplos de grafos ponderados y cómo modelar problemas como el del agente viajero usando grafos. Finalmente, muestra código C++ para implementar una representación secuencial de grafos mediante listas y matrices.
El documento describe el Proceso de Software Personal (PSP), un marco de trabajo desarrollado por Watts Humphrey para mejorar la calidad y productividad individual de los ingenieros de software. El PSP se enfoca en la planificación, diseño, revisión, desarrollo y análisis de resultados de pequeños proyectos de software de manera personal y disciplinada. El PSP ofrece cinco niveles progresivos para medir y mejorar continuamente el proceso individual de desarrollo de software.
Este documento presenta un manual de programación en lenguaje C. Explica conceptos básicos como hardware, software y lenguajes de programación. Luego introduce el lenguaje C, describiendo sus características y ventajas. Finalmente, explica la estructura básica de un programa en C, incluyendo directivas, funciones, variables y tipos de errores.
El documento describe la historia de los procesadores utilizados en las computadoras Mac de Apple, desde Motorola hasta Intel, y las capas del sistema operativo Mac OS X, incluyendo las aplicaciones Cocoa, Carbon y Java, así como las tecnologías subyacentes Darwin, Aqua, Quartz, OpenGL, QuickTime, Core Video y Core Audio. Explica brevemente el propósito de cada capa y tecnología para proveer gráficos, multimedia, compatibilidad multiplataforma y funcionalidad básica en Mac OS X.
El documento describe un proyecto para implementar un sistema de comercio electrónico para una empresa de confecciones usando la plataforma de código abierto nopCommerce. La empresa busca expandir sus canales de ventas online para captar nuevos mercados. NopCommerce satisfaría los objetivos de la empresa al proporcionar una tienda online escalable, segura y con funciones como gestión de pedidos, inventario, pagos y envíos.
Estructuras iterativas en java y pseudocódigoAlex Cordova
Breve exposición sobre las estructuras iterativas; while, for, do-while.
Incluyo su investigación por si gustan consultarla.
https://www.dropbox.com/s/d59lpwk9k5e2d4o/Investigacion%20-%20Iteraciones.docx?dl=0
Contadores
Acomuladores
Centinela o bandera
For
WHILE
Do while
Desde una perspectiva en java y pseudocódigo
Este documento trata sobre agentes inteligentes. Define un agente inteligente como un sistema capaz de percibir su entorno y actuar sobre él de forma autónoma para lograr metas deseadas por el usuario. Explica que los agentes inteligentes se enmarcan dentro del enfoque de sistemas que actúan racionalmente basándose en percepciones. También incluye un mapa conceptual sobre agentes inteligentes y un ejemplo de análisis PAMA (Percepciones, Acciones, Metas y Ambiente) de un sistema de monitoreo de ritmos cardí
Este documento proporciona una introducción a la programación lógica en Prolog. Explica conceptos básicos como hechos, reglas y consultas, y sintaxis básica. También cubre temas como aritmética, átomos, recursividad, listas, negación y la conexión de Prolog con MySQL.
Este documento presenta una guía para el examen diagnóstico de programación utilizando el programa PSeInt. Explica brevemente qué es PSeInt, describe su interfaz y área de trabajo. Luego, introduce conceptos clave como el pseudocódigo, tipos de datos, expresiones, estructuras de control y ejemplos resueltos de algoritmos en pseudocódigo.
El documento contiene 15 consultas SQL de ejercicios resueltos sobre tablas de autores, estudiantes, libros y préstamos. Las consultas incluyen seleccionar datos, filtrar por condiciones como nombres, áreas y fechas, y realizar cálculos como sumas y promedios.
Este documento presenta un manual de prácticas sobre el uso de software de diseño para el manejo de gráficos. Incluye investigación sobre OpenGL, código para crear varias figuras geométricas como un tablero de ajedrez, una estrella, un cubo con líneas y uno delineado, y explica cómo configurar OpenGL en Dev C++. El manual proporciona código y explicaciones detalladas para crear diferentes objetos 2D y 3D usando funciones de OpenGL.
Introducción a las librerías PyGame y PyOpenGLkdeespana
Este documento presenta una introducción al uso de las librerías Pygame y PyOpenGL en Python para crear gráficos 2D y 3D. Explica cómo instalar estas librerías, sus funciones principales, y proporciona un ejemplo básico de código para inicializar Pygame, definir shaders y dibujar una escena 3D simple con un cuadrado.
Este documento introduce las matrices de proyección en gráficos 3D. Explica las proyecciones paralelas, ortogonales y oblicuas, así como las proyecciones en perspectiva isométrica y de perspectiva. También cubre cómo se implementan las proyecciones ortogonales y de perspectiva en OpenGL utilizando las matrices de proyección y modelado.
El código crea un tablero de ajedrez de 8x8 usando OpenGL. Usa dos colores (amarillo y negro) y puntos de 50 píxeles de diámetro para dibujar las celdas en una cuadrícula, alternando los colores en filas y columnas para formar el patrón de ajedrez.
Este documento presenta un mini manual sobre OpenGL. Explica que OpenGL es una interfaz de software para hardware gráfico que consiste en una serie de comandos para manipular objetos gráficos. Detalla los principales componentes de OpenGL como las matrices de transformación, los buffers y las primitivas de dibujo básicas como puntos, líneas y polígonos. También resume la estructura típica de un programa que usa OpenGL y la librería GLUT.
OpenGL es una librería gráfica de código abierto que permite la manipulación de gráficos 3D. Un sistema gráfico típico incluye una CPU, memoria, frame buffer, LUT y conversor D/A. El modelo de cámara sintética imagina una escena filmada por una cámara con luces, colores, localizaciones, orientación y campo visual. La arquitectura gráfica usa un pipeline que incluye transformación del modelo, transformación de la vista, proyección, rasterización y clipping.
Este documento presenta 14 prácticas de diseño utilizando el software OpenGL. La introducción explica que OpenGL es una API para crear gráficos 2D y 3D a partir de primitivas geométricas como puntos, líneas y triángulos. Las prácticas 1-4 muestran cómo crear formas básicas como un tablero de ajedrez, una estrella, un cubo con líneas y un cubo delineado utilizando comandos como glBegin, glVertex y glEnd.
Este documento presenta información sobre el pensamiento computacional y la programación. Explica conceptos como algoritmos, descomposición, reconocimiento de patrones y abstracción, que son pilares del pensamiento computacional. También introduce diferentes entornos de programación como Scratch, Processing y MBlock, y explica sus características y cómo se pueden usar para enseñar programación de una manera visual y a través de la robótica.
El documento describe SIMUNROBOT, un software de simulación de robótica de código abierto. Explica que las herramientas actuales como Matlab son caras y lentas, y que SIMUNROBOT ofrece una alternativa gratuita y optimizada para renderizado 3D. Permite importar modelos 3D, calcular cinemática directa e inversa, y personalizar entornos de simulación para diseño y enseñanza de robótica. El autor propone que el código abierto permite una rápida adaptación y difusión del software.
El documento introduce la programación gráfica con OpenGL. Explica que OpenGL permite la manipulación de gráficos 3D y se puede usar en diferentes sistemas operativos e incluso lenguajes de programación. Describe los elementos de un sistema gráfico como el conversor D/A, CPU, memoria y frame buffer. También explica el modelo de cámara sintética usado por OpenGL y los componentes de un pipeline gráfico como la transformación, proyección y rasterización de objetos geométricos.
Modelado automático 3d de entornos mediante realidad aumentada orientado a ex...Cristina Urdiales
Sistema de Virtualidad Aumentada para reemplazar el fondo de una escena por un entorno virtual sin utilizar croma y empleando cámaras en movimiento. El sistema se basa en ubicar marcas artificiales en puntos del entorno para tener siempre ubicada la cámara dentro del espacio, que se modela automáticamente mediante planos de fondo para proceder a una substracción automática de fondo con respecto al fotograma que se procesa en cada instante. El fotograma modificado incluye en entorno virtual renderizado desde el punto de vista de la cámara, más todos los elementos móviles o que no forman parte del fondo en el entorno.
Programación Open GL ES en iPhone e iPod touchBlogintosh
Este documento presenta una introducción a OpenGL ES para desarrollar gráficos 3D en iPhone. Explica conceptos clave como vértices, primitivas, matrices de modelo-vista y proyección, y el uso de texturas. Detalla operaciones básicas como borrar la pantalla, dibujar primitivas y seleccionar colores. Además, cubre temas como traslaciones, rotaciones y escalado para manipular objetos 3D, y cargar y aplicar texturas a las primitivas.
OpenGL es una librería gráfica de código abierto que permite generar aplicaciones interactivas en 3D. Se utiliza principalmente en la industria de videojuegos y para reconstrucciones virtuales. OpenGL funciona estableciendo un estado gráfico inicial y luego modificando variables de estado a través de instrucciones. Los programas OpenGL inicializan una ventana, configuran parámetros como el color y sistema de coordenadas, y dibujan primitivas como puntos, líneas y polígonos especificando vértices.
Programación de Apps con Android – Avanzado por Jorge PintadoCongresoWeb
El documento proporciona información sobre cómo reducir el tamaño de las aplicaciones Android. Explica que el código oculto en Android está marcado con @hide y no se incluye en el SDK. También recomienda eliminar información de depuración, usar formatos multimedia más pequeños, 9patch para imágenes, y eliminar recursos y código no utilizados para reducir el tamaño de la aplicación.
Este documento presenta el código y descripción de varias prácticas de dibujo 2D y 3D utilizando OpenGL. La primera práctica dibuja un tablero de ajedrez con puntos. La segunda dibuja una estrella utilizando líneas. La tercera dibuja un cubo con líneas. La cuarta mejora el cubo delineando sus líneas. La quinta crea un muñeco con diferentes formas geométricas.
Este documento presenta el código y descripción de varias prácticas de dibujo 2D y 3D utilizando OpenGL. La primera práctica dibuja un tablero de ajedrez con puntos. La segunda dibuja una estrella utilizando líneas. La tercera dibuja un cubo con líneas. La cuarta mejora el cubo delineando sus líneas. La quinta crea un muñeco con diferentes formas geométricas.
Este documento describe el motor de renderizado OGRE y cómo puede usarse para desarrollar juegos en GNU/Linux. Explica conceptos clave como escenas, entidades, nodos de escena, cámaras, luces, texturas y cómo cargar recursos. También cubre temas como terrenos, niebla, cielos y la extensibilidad de OGRE a través de plugins.
Este documento introduce OpenGL, una librería gráfica de código abierto que permite la manipulación de gráficos 3D. Explica que OpenGL puede usarse en varios sistemas operativos y lenguajes de programación. Luego describe los componentes típicos de un sistema gráfico como la CPU, memoria y pantalla, y cómo OpenGL representa gráficos 3D usando luces, cámaras y objetos. Finalmente, resume la arquitectura del pipeline gráfico de OpenGL.
El documento proporciona una introducción al modelado 3D, incluyendo las fases de creación (modelado, texturizado, iluminación y animación), las principales aplicaciones como Maya, 3D Studio Max y Sketchup, y la compatibilidad entre formatos como OBJ y FBX. También compara Sketchup y 3D Studio Max, destacando que Sketchup es más sencillo pero 3D Studio Max es más realista y utilizado profesionalmente.
El documento presenta 10 prácticas de OpenGL para crear diferentes figuras geométricas 2D como un tablero de ajedrez, una estrella, un cubo con líneas. También incluye prácticas más complejas como un cubo delineado, un muñeco con triángulos y formas, y animaciones de un círculo y el sistema solar.
This document discusses creating domain-specific languages (DSLs) using Xtext. It defines DSLs as programming languages focused on a particular domain, as opposed to general purpose languages. The document outlines how DSLs are classified and stakeholders involved. It describes benefits of DSLs like reducing mistakes and facilitating understanding for non-experts, but also drawbacks like additional development costs. Key aspects of creating DSLs with Xtext are discussed, including defining a grammar to generate a parser and IDE tools to develop models that can then be transformed to other artifacts.
Introduction to architectures based on models, models and metamodels. model d...Vicente García Díaz
This document provides an introduction to model-driven architecture and model-driven engineering. It discusses the motivation for MDE, including reducing software complexity and improving productivity. The key concepts of MDE are models, metamodels, and model transformations to generate code and other artifacts. MDE aims to increase abstraction levels and automate software development processes. The document uses examples like state machines and database schemas to illustrate metamodels, modeling languages and model transformations.
Este documento presenta jBPM, una plataforma para modelar, ejecutar y administrar procesos de negocio. Explica conceptos como modelado de procesos de negocio, BPMN, XPDL y WS-BPEL. Luego introduce jPDL, el lenguaje utilizado para describir procesos en jBPM. Finalmente, detalla diversas actividades de control de flujo, automáticas y de eventos que se pueden utilizar en jPDL para modelar procesos complejos con decisiones, concurrencias, tareas, subprocesos,
Este documento describe dos lenguajes de marcado, KML y ARML, que se pueden usar para crear mundos de realidad aumentada en Wikitude. Explica los conceptos básicos de Wikitude, y proporciona detalles sobre cómo desarrollar mundos utilizando cada lenguaje, incluidos ejemplos de su estructura y cómo probar los mundos creados.
Este documento presenta el SDK Wikitude ARchitect para crear aplicaciones de realidad aumentada. Explica conceptos básicos como las herramientas ARchitect, la API, el visor móvil y el motor de escritorio. Incluye ejemplos de cómo insertar elementos flotantes en la cámara, usar el contexto AR, crear un círculo superpuesto, añadir y reaccionar a eventos, e insertar imágenes desde archivos. El objetivo es mostrar las capacidades del SDK para desarrollar aplicaciones de realidad aumentada de forma sen
This document discusses various algorithms for sorting data, including:
- Bubble sort, which works by comparing and swapping adjacent elements until the list is fully sorted. Both regular bubble sort and a version with a sentinel are described.
- Bidirectional bubble sort, which works in both directions simultaneously to prevent issues when the data is almost sorted.
The document provides pseudocode examples and discusses the time complexity of different sorting algorithms, including simple algorithms like bubble sort and more sophisticated approaches. It aims to classify and explain sorting techniques.
Este documento presenta una introducción a la ingeniería dirigida por modelos (MDE). Explica conceptos básicos como los modelos, metamodelos y el proceso de desarrollo basado en modelos. También describe ejemplos de aplicación de MDE en diferentes dominios como la telefonía IP, los seguros y los videojuegos. Finalmente, introduce los estándares relacionados con MDE como el estándar Model-Driven Architecture y lenguajes como UML y MOF.
Este documento proporciona una introducción a la realidad aumentada. Explica conceptos clave como la diferencia entre realidad aumentada y realidad virtual, y provee ejemplos de aplicaciones en entretenimiento, ayuda y comercio. También describe métodos para identificar elementos como el seguimiento de características naturales y la búsqueda visual, y cubre temas como navegadores AR y geolocalización.
El documento proporciona una introducción a ARToolKit, una librería de software para construir aplicaciones de realidad aumentada. Explica los conceptos básicos como el rastreo de posiciones y la superposición de objetos a través de video, y describe cómo funciona a través de la detección de marcadores. También cubre temas como la calibración de cámaras, el desarrollo de aplicaciones simples utilizando las funciones principales de ARToolKit, y proporciona ejemplos de su uso en diferentes sistemas como Android.
Este documento proporciona una introducción al Robot Operating System (ROS). ROS es un framework de código abierto que se utiliza comúnmente para desarrollar aplicaciones robóticas. Proporciona herramientas para la comunicación entre máquinas, simulación y desarrollo de software para robots. El documento explica conceptos clave como nodos, tópicos, servicios y el grafo de computación en ROS.
Este documento describe cómo crear servicios web para proporcionar datos de realidad aumentada a la plataforma Wikitude. Explica conceptos básicos como el almacenamiento externo de datos, la arquitectura de Wikitude y formas de desarrollo. También presenta una biblioteca PHP para trabajar con el formato ARML y muestra un ejemplo de servicio web que se conecta a una base de datos MySQL para obtener y devolver puntos de interés.
Este documento proporciona una introducción a los aspectos básicos del procesamiento de textos con LaTeX. Explica conceptos como la estructura de un documento LaTeX, los diferentes comandos y entornos disponibles, la inserción de caracteres especiales, el formato de fuentes y estilos, y las opciones para alinear y espaciar el texto. El documento servirá como guía para aprender los fundamentos de LaTeX.
Este documento describe cómo automatizar Microsoft Word usando código. Explica que las aplicaciones de Office como Word tienen librerías que permiten acceder y manipular sus objetos como si fueran objetos de programación. Esto permite desarrollar software que controle Word usando lenguajes de programación. Luego detalla los pasos para crear un proyecto .NET, incluir las referencias a las librerías de Word, y escribir código para abrir Word, crear un documento y escribir texto en él.
Este documento trata sobre los árboles como estructura de datos. Explica conceptos básicos sobre árboles como nodos, altura, profundidad y tamaño. Luego se detalla sobre árboles binarios, árboles de búsqueda como los AVL, y árboles multicamino. Finalmente menciona bibliografía sobre el tema.
Este documento presenta conceptos básicos sobre dispersión y estructuras de datos hash. Explica protección activa mediante el uso de buenas funciones hash y protección pasiva cuando varios elementos comparten la misma posición en la tabla. Detalla métodos como tablas hash abiertas y cerradas, y técnicas de exploración lineal y cuadrática para buscar posiciones próximas cuando ocurren colisiones. El documento contiene varios ejercicios para ilustrar estos conceptos.
Este documento presenta varios algoritmos para encontrar caminos óptimos en grafos. Explica el algoritmo de búsqueda en anchura (breadth-first search) para encontrar el camino más corto sin considerar pesos. Luego describe el algoritmo de Dijkstra para encontrar el camino mínimo en grafos con pesos positivos y el algoritmo de Bellman-Ford para grafos con pesos positivos y negativos. Finalmente, proporciona ejemplos y pseudocódigo para cada algoritmo.
Catalogo Refrigeracion Miele Distribuidor Oficial Amado Salvador ValenciaAMADO SALVADOR
Descubre el catálogo general de la gama de productos de refrigeración del fabricante de electrodomésticos Miele, presentado por Amado Salvador distribuidor oficial Miele en Valencia. Como distribuidor oficial de electrodomésticos Miele, Amado Salvador ofrece una amplia selección de refrigeradores, congeladores y soluciones de refrigeración de alta calidad, resistencia y diseño superior de esta marca.
La gama de productos de Miele se caracteriza por su innovación tecnológica y eficiencia energética, garantizando que cada electrodoméstico no solo cumpla con las expectativas, sino que las supere. Los refrigeradores Miele están diseñados para ofrecer un rendimiento óptimo y una conservación perfecta de los alimentos, con características avanzadas como la tecnología de enfriamiento Dynamic Cooling, sistemas de almacenamiento flexible y acabados premium.
En este catálogo, encontrarás detalles sobre los distintos modelos de refrigeradores y congeladores Miele, incluyendo sus especificaciones técnicas, características destacadas y beneficios para el usuario. Amado Salvador, como distribuidor oficial de electrodomésticos Miele, garantiza que todos los productos cumplen con los más altos estándares de calidad y durabilidad.
Explora el catálogo completo y encuentra el refrigerador Miele perfecto para tu hogar con Amado Salvador, el distribuidor oficial de electrodomésticos Miele.
HPE presenta una competició destinada a estudiants, que busca fomentar habilitats tecnològiques i promoure la innovació en un entorn STEAM (Ciència, Tecnologia, Enginyeria, Arts i Matemàtiques). A través de diverses fases, els equips han de resoldre reptes mensuals basats en àrees com algorísmica, desenvolupament de programari, infraestructures tecnològiques, intel·ligència artificial i altres tecnologies. Els millors equips tenen l'oportunitat de desenvolupar un projecte més gran en una fase presencial final, on han de crear una solució concreta per a un conflicte real relacionat amb la sostenibilitat. Aquesta competició promou la inclusió, la sostenibilitat i l'accessibilitat tecnològica, alineant-se amb els Objectius de Desenvolupament Sostenible de l'ONU.
Infografia TCP/IP (Transmission Control Protocol/Internet Protocol)codesiret
Los protocolos son conjuntos de
normas para formatos de mensaje y
procedimientos que permiten a las
máquinas y los programas de aplicación
intercambiar información.
Todo sobre la tarjeta de video (Bienvenidos a mi blog personal)AbrahamCastillo42
Power point, diseñado por estudiantes de ciclo 1 arquitectura de plataformas, esta con la finalidad de dar a conocer el componente hardware llamado tarjeta de video..
SOPRA STERIA presenta una aplicació destinada a persones amb discapacitat intel·lectual que busca millorar la seva integració laboral i digital. Permet crear currículums de manera senzilla i intuitiva, facilitant així la seva participació en el mercat laboral i la seva independència econòmica. Aquesta iniciativa no només aborda la bretxa digital, sinó que també contribueix a reduir la desigualtat proporcionant eines accessibles i inclusives. A més, "inCV" està alineat amb els Objectius de Desenvolupament Sostenible de l'Agenda 2030, especialment els relacionats amb el treball decent i la reducció de desigualtats.
La inteligencia artificial sigue evolucionando rápidamente, prometiendo transformar múltiples aspectos de la sociedad mientras plantea importantes cuestiones que requieren una cuidadosa consideración y regulación.
1. Accesibilidad y Realidad
Aumentada
Iniciación a OpenGL
Vicente García Díaz – garciavicente@uniovi.es
Universidad de Oviedo, 2012
2. 2
Tabla de contenidos
Iniciación a OpenGL
1. Conceptos básicos
2. OpenGL 2D
3. OpenGL 3D
3.
4. 4
Conceptos básicos
¿Qué es OpenGL?
• Open Graphics Library
• Es una especificación independiente del lenguaje
• Multiplataforma
• Es el estándar de la industria para realizar
aplicaciones con gráficos 2D y 3D
• Se basa en primitivas muy básicas
• Desarrollado inicialmente por Silicon Graphics Inc
• Actualmente lo gestiona el Khronos Group
• http://www.opengl.org/ -
http://www.khronos.org/
5. 5
Conceptos básicos
¿Qué es OpenGL ES?
• Es el estándar de la industria para trabajar con
gráficos 2D y 3D, especialmente pensado para
dispositivos móviles y embebidos
• Ha sido desarrollado y está siendo mantenido por el
Khronos Group
▫ ATI, NVIDIA, Intel, …
• Varias versiones: 1.0, 1.1, 2
▫ Ruptura de compatibilidad
• El estándar se define mediante cabeceras C y una
especificación detallada de como la implementación
debería comportarse
7. 7
Conceptos básicos
Modelo de programación
Fuente: http://playerstage.sourceforge.net
8. 8
Conceptos básicos
Elementos clave en OpenGL
• Objetos (modelos)
▫ Geometría conjunto de triángulos
▫ Color tripleta RGB
▫ Textura y material
• Luces
▫ Atributos como posición, dirección o color
• Cámara
▫ Atributos como posición y orientación que definen el
volumen de visión
• Ventana de visualización (Viewport)
▫ Define el tamaño y la resolución final
9. 9
Conceptos básicos
Proyecciones
• OpenGL necesita crear imágenes desde el punto de
vista de una cámara
• Las proyecciones pueden ser de 2 tipos:
▫ Paralelas u ortográficas
Análogo al software CAD
No importa la distancia
2D
▫ Perspectiva
Análogo a la vista humana
Los objetos más lejanos se visualizan más pequeños
3D
Fuente: http://docs.autodesk.com
10. 10
Conceptos básicos
Plano de proyección
• Es donde OpenGL “proyecta” las imágenes
Fuente: http://www.codeguru.com/cpp/misc/misc/graphics/article.php/c10123/Deriving-Projection-Matrices.htm
http://www.ecst.csuchico.edu/~judyc/1011F-csci566/notes/notes14.html
11. 11
Conceptos básicos
Proyección en perspectiva VS paralela
Plano de delimitación lejano
Plano de
delimitación
cercano
Fuente: http://www.apress.com/9781430230427
12. 12
Conceptos básicos
Trabajo con matrices
• Se utilizan para realizar transformaciones en
OpenGL:
▫ Proyecciones
▫ Traslaciones
▫ Rotaciones
▫ Escalados
• Para realizar las transformaciones se multiplica la
matriz por un punto
• Se pueden concatenar transformaciones mediante
multiplicaciones
• Existe una matriz especial denominada identidad
13. 13
Conceptos básicos
Matrices disponibles en OpenGL
• Model-view matrix
▫ Para mover, rotar o escalar puntos de los
triángulos
• Projection matrix
▫ Para proyectar los objetos que están contenidos
en el volumen de visión
• Texture matrix
▫ Para trabajar con las texturas de los objetos
14. 14
Conceptos básicos
Trabajo con OpenGL en Android
• Necesitamos una vista que permita trabajar con
OpenGL en una actividad de Android
• Android incorpora GLSurfaveView
▫ Crea un hilo para trabajar con OpenGL
• Sólo hay que implementar una interfaz listener
17. 17
Conceptos básicos AROpenGLTests (com.vgd.aropengltest1)
?
1. ¿Qué ocurriría si se llamara al método
glClearColor desde onSurfaceCreated?
2. ¿Y si después de cambiarlo se volviera al menú
principal (una vez abierta la aplicación) y se
volviera a abrir la aplicación?
3. ¿Qué ocurriría si no se llama nunca al método
glClearColor?
18. 18
Conceptos básicos
La ventana de visualización
• La ventana de visualización traslada coordenadas de
los puntos proyectados en el plano de delimitación
cercano a pixeles que se mostrarán en el dispositivo
• Se puede especificar qué porción de la ventana se
quiere utilizar:
▫ GL10.glViewport(int x, int y, int width, int height)
▫ x e y hacen referencia la esquina inferior izquierda
19. 19
Conceptos básicos
Trabajo con la matriz de proyección
• Lo primero es especificar con qué matriz queremos
trabajar
▫ GL10.glMatrixMode(int mode)
▫ Posibles valores: GL10.GL_PROJECTION, GL10.GL_MODELVIEW,
GL10.GL_TEXTURE
• Se perderá la selección cuando se pierda el contexto
de la aplicación
• No se trabaja igual con la matriz paralela (2D) y con
la matriz en perspectiva (3D)
20.
21. 21
OpenGL 2D
Trabajo con la matriz de proyección paralela
• Se puede definir el volumen de visión utilizando un
sistema de coordenadas (se puede cambiar)
• Se verán todos los puntos definidos en ese área
• GL10.glOrthof(int left, int right, int
bottom, int top, int near, int far)
Fuente: http://www.apress.com/9781430230427
http://www.cosc.brocku.ca/Offerings/3P98/course/lectures/3d_perspective/
22. 22
OpenGL 2D
Triángulos (I)
• ¿Cómo definimos un triángulo?
▫ Un triángulo se define entre 3 puntos
▫ Cada punto es un vértice
▫ Un vértice tiene una posición en el espacio 3D
▫ Una posición en el espacio 3D se representa por
tres coordenadas x,y,z
▫ Un vértice puede tener otros atributos como
color o textura
23. 23
OpenGL 2D
Triángulos (II)
• ¿Cómo se realizan las definiciones de las figuras?
▫ Mediante el empleo de arrays
• …pero OpenGL es un API C
• Java NIO buffers
▫ Bloques de memoria de bytes consecutivos
▫ ByteBuffer buffer = ByteBuffer.allocateDirect(NUMBER_BYTES);
▫ buffer.order(ByteOrder.nativeOrder());
▫ FloatBuffer floatBuffer = buffer.asFloatBuffer();
▫ float[] vertices = //Definiciones de los vértices
▫ floatBuffer.clear(); //Se “inicia” el buffer
▫ floatBuffer.put(vertices); //Se introducen los vértices
▫ floatBuffer.flip(); //Se “cierra” el buffer
24. 24
OpenGL 2D AROpenGLTests (com.vgd.aropengltest.triangulo)
Dibujo de un
triángulo
Especificación de los puntos
del triángulo
Definimos la ventana de visualización
Especificamos el color del fondo (color por defecto)
Especificamos que queremos trabajar con una matriz
Resetea la matriz de proyección (realmente no es necesaria en este caso)
Definición de matriz de proyección paralela
El color de lo que queremos dibujar (de todos los vértices)
Indicamos que los vértices tienen posición ¿?
Utilizamos dos coordenadas (x,y) definidas
usando floats (consecutivos)
Dibujamos un triángulo que tiene 3
vértices (el primero es el 0)
25. 25
OpenGL 2D AROpenGLTests (com.vgd.aropengltest.triangulo)
?
1. Coloca el método glOrthof en onDrawFrame,
¿funciona bien?
2. Introduce valores para la coordenada z del
triángulo, ¿cambia la salida?
3. ¿Qué sería lo que habría que dejar idealmente en
el método onDrawFrame?
4. Intenta hacer que el fondo de la pantalla sea blanco
26. 26
OpenGL 2D
Modificación de los colores de los vértices
• Se pueden tener un control más granulado de los
colores de cada vértice de los objetos
Sin definir el color de los vértices
X Y X Y X Y X Y X Y X Y X Y X Y X Y X Y
Posiciones en memoria
Definiendo el color de los vértices
X Y R G B A X Y R G B A X Y R G B A … …
Posiciones en memoria
27. 27
OpenGL 2D AROpenGLTests (com.vgd.aropengltest.triangulo.colorvertice)
Triángulo con color por vértice
(2 coordenadas + 4 para el color) * 4 bytes por float
Ese valor es ignorado, ya que los vértices tienen color
Los vértices tienen posición y también color
En la posición 0 de la memoria de cada vértice se obtiene su posición
En la posición 2 de la memoria de cada vértice se obtiene su color
Distancia entre cada vértice
28. 28
OpenGL 2D AROpenGLTests (com.vgd.aropengltest.triangulo.colorvertice)
?
1. Intenta proyectar algo como
lo siguiente:
2. Intenta visualizar algo
parecido a lo siguiente:
29. 29
OpenGL 2D
Inserción de texturas en los vértices (I)
• Se pueden incluir texturas en los vértices indicando
sus coordenadas
Sin definir texturas en los vértices
X Y X Y X Y X Y X Y X Y X Y X Y X Y X Y
Posiciones en memoria
Definiendo las texturas de los vértices
X Y S T X Y S T X Y S T X Y S T X Y S T
Posiciones en memoria
30. 30
OpenGL 2D
Inserción de texturas en los vértices (II)
• Las coordenadas s,t se asocian con las x,y
• Trabajamos con un sistema de coordenadas
normalizado
(0,0) (1,0)
(0,1) (1,1)
Coordenadas s,t Coordenadas x,y
31. 31
OpenGL 2D AROpenGLTests (com.vgd.aropengltest.triangulo.texturavertice)
Ejemplo de uso de texturas (I)
Cargar un bitmap en memoria
Se crea un array para las texturas
Se crea 1 textura empezando en la posición 0 del
array. Después se obtiene el id del primer elemento
Activar el modo textura
El id se corresponde con una textura 2D
Se asocia la imagen con la textura
Puede existir: magnificación y minificación. Hay que especificar como queremos que se
comporte OpenGL para escalar (GL10.GL_NEAREST o GL10.GL_LINEAR)
Necesitamos pasarle en el constructor el contexto con el fin de
utilizarlo para cargar una imagen guardada en res/drawable
32. 32
OpenGL 2D AROpenGLTests (com.vgd.aropengltest.triangulo.texturavertice)
Ejemplo de uso de texturas (II)
Método creado para cargar la textura
Los vértices tienen posición y también
textura
33. 33
OpenGL 2D AROpenGLTests (com.vgd.aropengltest.triangulo.texturavertice)
?
1. Dibuja 2 triángulos en la pantalla como los
siguientes:
2. ¿Cómo construirías un cuadrado?
**Busca información sobre los vértices indexados
34. 34
OpenGL 2D
Otras primitivas
• Todas las primitivas se definen con vértices
Fuente: http://librairie.immateriel.fr/fr/read_book/9780596804824/ch02s02
35. 35
OpenGL 2D
Transformaciones
• Para realizar rotaciones, traslados o escalados se
utiliza la matriz model-view
▫ gl.glMatrixMode(GL10.GL_MODELVIEW)
• Por defecto tiene los valores identidad (todo unos)
• Se utilizan los métodos:
▫ gl.glTranslatef(float x, float y, float z)
▫ gl.glRotatef(float angle, float axisX, float
axisY, float axisZ)
▫ gl.glScalef(float x, float y, float z)
36. 36
OpenGL 2D AROpenGLTests (com.vgd.aropengltest.triangulo.traslacion)
Traslaciones
• Haciendo el triángulo más pequeño,
quedaría espacio para varios…
Cambio de matriz
Se inicializa la matriz a unos
Cada vez que se entra, se aumenta en 30 cada valor
Se dibuja el triángulo (3 vértices con offset 0)
1. ¿Es necesario que glMatrixMode y ?
glLoadIdentity estén en onDrawFrame?
37. 37
OpenGL 2D AROpenGLTests (com.vgd.aropengltest.triangulo.rotacion)
Rotaciones
Rota 45º sobre el eje Z
1.
?
¿Qué ocurre si rotamos sobre el eje x o sobre el
eje y?
Fuente: http://www.germanium3d.com/code/CoordinateSystemConcepts
38. 38
OpenGL 2D AROpenGLTests (com.vgd.aropengltest.triangulo.escalado)
Escalados
Se hace 4 veces más ancho y 2 veces más alto
1. ¿Importa en orden en el que se definen en el
código las trasnformaciones?
?
41. 41
OpenGL 3D
Principales diferencias respecto a 2D
1. Se utiliza también la coordenada z
2. En lugar de proyección paralela se utiliza la
proyección en perspectiva
3. Las transformaciones tienen más libertad de
movimiento (en lugar de utilizar 2 ejes ahora se
utilizan 3)
4. Hay que tener en cuenta el orden en el que se
definen los objetos, ya que los más cercanos
pueden tapar a los más lejanos
42. 42
OpenGL 3D
Trabajo con la matriz de proyección en
perspectiva
• GLU.gluPerspective(GL10 gl, float fieldOfView, float
aspectRatio, float near, float far);
▫ gl para acceder a toda la API de OpenGL
▫ fieldOfView ángulo (para ver más a izquierda-
derecha)
▫ aspectRatio para asegurar que el mundo no se
estira/contrae en caso de que la ventana de visualización
no tenga un aspectRatio de 1 (ancho / alto)
▫ near y far para delimitar lo que se observa en el
volumen de visualización (coordenada z)
43. 43
OpenGL 3D AROpenGLTests (com.vgd.aropengltest.triangulo.tresdimen)
Dos triángulos en proyección perspectiva
Proyección en perspectiva, con ángulo campo
de visión 67 y con capacidad para ver todos
los z > -1 y z < -10
Primero se dibuja un triángulo y luego el otro
44. 44
OpenGL 3D
Z-Buffer (I)
• Es una estructura que se encarga de guardar
valores de profundidad de los pixeles
• Es la distancia desde un punto z al plano de
proyección
• ¿Por qué lo necesitamos?
▫ Para saber si un elemento se ha de renderizar
delante o detrás de otro
▫ GL10.glEnable(GL10.GL_DEPTH_TEST)
▫ Si la profundidad de un pixel es menor que la de otro
pasa el test
45. 45
OpenGL 3D
Z-Buffer (II)
Fuente: http://www.apress.com/9781430230427
46. 46
OpenGL 3D AROpenGLTests (com.vgd.aropengltest.cubo)
Creación de un cubo con texturas (I) ?
• Este es el objetivo final:
47. 47
OpenGL 3D AROpenGLTests (com.vgd.aropengltest.cubo)
Creación de un cubo con texturas (II)
• Pistas
▫ Coordenadas de los vértices y de las texturas
Fuente: http://www.apress.com/9781430230427
48. 48
OpenGL 3D AROpenGLTests (com.vgd.aropengltest.cubo)
Creación de un cubo con texturas (III)
• Pistas
▫ El tamaño de cada vértice es (3 + 2) * 4 = 20
▫ Además de limpiar el buffer de color habrá que limpiar el
Z-buffer
gl.glClear(GL10.GL_COLOR_BUFFER_BIT |
GL10.GL_DEPTH_BUFFER_BIT)
▫ Hay que activar el test de profundidad además de
GL_VERTEX_ARRAY y GL_TEXTURE_COORD_ARRAY
gl.glEnable(GL10.GL_DEPTH_TEST)
▫ Hay que trabajar con texturas (loadTexture)
Es buena práctica liberar los recursos asociados con el
bitmap antes de finalizar el método
bitmap.recycle()
Fuente: http://www.apress.com/9781430230427
49. 49
OpenGL 3D AROpenGLTests (com.vgd.aropengltest.cubo)
Creación de un cubo con texturas (IV)
• Pistas para el método onDrawFrame
▫ Hay que acordarse de reiniciar la matriz en cada frame
GL_MODELVIEW
▫ Al estar trabajando con el Z-buffer, hay que limpiar los
bufferes en cada frame
▫ Si se mantiene la misma configuración para la proyección
en perspectiva: GLU.gluPerspective(gl, 67, width /
(float)height, 0.1f, 10) habrá que trasladar el cubo más
lejos para que quede dentro del volumen de visión. Por
ejemplo:
gl.glTranslatef(0,0,-3)
▫ Queremos que el cubo rote sobre si mismo:
Gl.glRotate(angulo++, 1, 1, 1)
Fuente: http://www.apress.com/9781430230427