Mapeo Ventana-Puerto de Visión

Slides:



Advertisements
Presentaciones similares
Curvas y Superficies Referencia – capítulo 11 del Libro Rojo.
Advertisements

GRAFICOS . *TIPOS . * DETERMINACION DE ESCALA..
Sistemas de coordenadas de referencia
Funciones. Programación, Algoritmos y Estructuras de Datos.
Filtros y Detectores de Borde
Para cambiar el formato de los ejes cartesianos, se selecciona aluno de los números que aparecen en el eje y se da click derecho para que aparezca el cuadro.
CI TEORIA semana 8 Subprogramas o funciones Definición de funciones.
Unidad I Java y C++ : Similitudes y diferencias
PRIMITIVAS DE SALIDA Curso de graficación I.
Dibujar en 3D: puntos, líneas y polígonos.
Transformaciones en OpenGL
Cámara.
>> Transformación << Sistemas de Referencia
Gráficas del MRU.
1 2 Ejecución del programa Descripción y operaciones básicas de funcionamiento.
Graficación 2D Alumna: Yasmin Rosales Cruz
Trfm.SistRefA. García-Alonso1 >> Transformación
Cálculo II Profesor Ing. Gustavo Rocha Área entre dos Curvas Por Alan Reyes Vilchis Grupo 9 Abril 2005 Universidad Nacional Autónoma de México Facultad.
Pase de parámetros a funciones
EL EDITOR GRAFICO DE WINDOWS
Racer 3D.
DESARROLLO WEB CON HTML 5 Francisco J. Arce Anguiano
Convenciones de nomenclatura y diseño
Un climograma es la representación
Tarea II Matemáticas Francisco Raul Gandara Villaverde
>> Representación << Poliedros
Función Inversa Sesión 3.
Fundamentos para el Cálculo
PROYECCIONES A ISOMETRICO
Gráficas.
FUNCIONES Y PROCEDIMIENTOS
Modulo: Canvas Prof. Romario Fuentes
FUNCIONES EN EXCEL 2007.
Vista de documentos Diseño de impresión: En esta vista, se pueden aplicar formatos y realizar la mayoría de las tareas habituales En esta vista no se ven.
CONFIGURAR PÁGINA Antes de imprimir una hoja de cálculo, es conveniente que configuremos la página, para modificar factores que afectan a la presentación.
DIBUJO DE TERRENO 3D.
Manipulando celdas Selección de celdas
Elementos avanzados en GDevelop
CREAR DIAGRAMA DE FLUJO
Sistema cartesiano La determinación de un punto cualquiera se llama plano cartesiano. El plano cartesiano se compone de un eje horizontal llamado X, un.
MANEJO DE VENTANAS El Sistema Operativo Windows basa su interfaz en el uso de ventanas. Es decir, cada aplicación se abre en un recuadro llamado ventana,
Carpetas y archivos.
Filosofía del SIG Clase: Sensoría Remota
PLANO CARTESIANO René Descartes ( ).
Computación Gráfica Universidad de los Andes (Algunos Fundamentos)
Scratch Presentado por: Sharon Daniela Bustos Barón. 901 J.M.
EL EDITOR GRAFICO DE WINDOWS
Características del navegador Opera
Conceptos generales de trigonometría. SISTEMAS DE COORDENADAS RECTANGULARES Abscisa positiva Ordenada positiva origen Ordenada negativa Abscisa negativa.
INTRODUCCIÓN A MS EXCEL
Introducción práctica la uso de la tarjeta Arduino.
La manera más común para definir una perspectiva cónica es dando su punto de vista abatido V, la Línea de Tierra y la Línea de Horizonte. A es el punto.
LA VISUALIZACIÓN LÓGICA
Sistemas de Representación Grafica
LA VISUALIZACIÓN LÓGICA
INGENIERÍA DE PRODUCTO 1.2 Círculo de Mohr.. El círculo de Mohr es una gráfica de las combinaciones de los esfuerzos normal y cortante que existen en.
Semejanza.
TRANSFORMACIONES ISOMÉTRICAS En una transformación isométrica:
Proyección ventana-viewport
INTRODUCCIÓN A DISEÑO Objetivos del curso. Definición de PowerPoint. Que podemos hacer en PowerPoint. Definición de Presentación. Principios de un buen.
Determinación de superficies ocultas
Guía teórica de manejo de estructuras de datos
Texturizado.
Mientras estudian cinemática, ¿Con que rapidez se mueven en relación con las silla a la que están sentados? ¿Y en relación con el sol?
 En estos programas podemos poner números, texto, imágenes, y de manera automática podemos analizar diferentes datos, compararlos, crear gráficas…
Access Este programa permite manipular datos en forma de tablas, realizar cálculos complejos con fórmulas y funciones, incluso dibujar distintos tipos.
DIBUJO EN AUTOCAD 3D. ETAPA 1: DIBUJAR ESTA PLANTA EN 2D.
TRANSFORMACIONES En una transformación isométrica: 1) No se altera la forma ni el tamaño de la figura. 2) Sólo cambia la posición (orientación o sentido.
¿QUÉ ES GIMP Y PARA QUE SIRVE? GIMP es un programa ideal para retocar, componer y editar imágenes. Muchas pequeñas empresas lo utilizan para crear logotipos.
Transcripción de la presentación:

Mapeo Ventana-Puerto de Visión

Sistema de Coordenadas Sistema de Coordenadas Globales (datos abstractos) Sistema de Coordenadas Locales (datos abstractos) Sistema de Coordenadas de la Pantalla (pixeles) Ventana (Window), Puerto de Vision(Viewport) Mapeo Ventana-Puerto de Visión (Window to viewport Mapping )

Screen Coordinate System Glut OpenGL (0,0)

Sistema de Coordenadas de la Pantalla (Screen Coordinate System) Malla Cartesiana en 2D Origen (0,0) en esquina inferior izquierda(OpenGL) Horizontal – x Vertical – y Los Pixeles estan definidos en las Intersecciones de la malla El sistema de coordenadas esta definido con respecto al origen de la ventana (OpenGL:la esquina inferior izquierda de la ventana ) y (0,0) x (2,2)

Sistema de Coordenadas Global Las coordenadas dependen de la aplicación(mts, in, cm, etc) – es dificil trabajar directamente en la pantalla (mapear) 10 feet 20 feet

Sistema de Coordenadas Globales Otro ejemplo: graficar la función sinc: sinc(x) = sin(PI*x)/PI*x x = -4 .. +4

Sistema de Coordenadas Globales (World Coordinate System) Esta muy bien si podemos utilizar las coordenadas en el world coordinate system ( no de la pantalla) glBegin(GL_LINE_STRIP); for (x = -4.0; x <4.0; x+=0.1){ GLfloat y = sin(3.14 * x) / (3.14 * x); glVertex2f (x,y); } glEnd();

Definir una ventana en el Espacio Global (world window)

Ventana (World Window) World window – una region rectangular en el espacio global que define lo que se va a desplegar W_B W_T Definido por W_L, W_R, W_B, W_T W_L W_R Usar en OpenGL el comando: gluOrtho2D(left,right,bottom, top)

Puerto deVision (Viewport) La region rectangular en la pantalla para desplegar los objetos graficos definidos por la ventana (World window) Definido en el sistema de coordenadas de la pantalla (valores enteros) glViewport(int left, int bottom, int (right-left), int (top-bottom)); llamar esta función antes de desplegar (definir glBegin() y glEnd() ) V_L V_R V_B V_T

Para dibujar lo definido en el Espacio Global Se necesita hacer dos tareas Definir un rectangulo (ventana) en el espacio global (llamar la función de OpenGL ) Definir un viewport (llamar una función de OpenGL ) Realizar el mapeo ( window to viewport mapping) (OpenGL internamente hara esto por uno)

Ejemplo DrawQuad() { glViewport(0,0,300,200); (300,200) glMatrixMode(GL_PROJECTION); glLoadIdentity(); gluOrtho2D(-1,1,-1,1); glBegin(GL_QUADS); glColor3f(1,1,0); glVertex2f(-0.5,-0.5); glVertex2f(+0.5,-0.5); glVertex2f(+0.5,+0.5); glVertex2f(-0.5,+0.5); glEnd(); } (300,200) (0,0) viewport

Mapeo Ventana- Puerto de Visión Los objetos en el espacio global definidos por la Ventana seran dibujados en el Puerto de Visión viewport (x,y) World window (Sx, Sy)

Mapeo Window-Viewport Como calcular (sx, sy) ? (x,y) (Sx, Sy)

Mapeo Ventana-Puerto de Visión Primera cosa para recordar – no se necesita calcular. OpenGL lo hará por uno Solo se necesita definir el viewport (con glViewport()), y la ventna el el espacio abstracto (con gluOrtho2D()) Pero veremos lo que hay detras del mapeo.

Tambien, una cosa para recordar … Un aspecto practico de OpenGL Antes de llamar a gluOrtho2D(), se necesitará dos lineas de código glMatrixMode(GL_PROJECTION); glLoadIdentity(); gluOrtho2D(Left, Right, Bottom, Top);

Ventana a Puerto de Vision Aspectos que estan definidos: Ventana (W_L, W_R, W_B, W_T) Puerto de Vision (V_L, V_R, V_B, V_T) (x,y) en sistema de coordenadas globales Calcular el correspondiente (sx, sy) en el sistema de coordenadas de la pantalla

Ventana a Puerto de Vision Principios basicos: el mapeo debe ser proporcional (x,y) (sx,sy) (x – W_L) / (W_R – W_L) = (sx – V_L) / (V_R – V_L) (y - W_B) / (W_T – W_B) = (sy – V_B) / (V_T – V_B)

Mapeo Ventana-Puerto de Vision (x,y) (sx,sy) (x – W_L) / (W_R – W_L) = (sx – V_L) / (V_R – V_L) (y - W_B) / (W_T – W_B) = (sy – V_B) / (V_T – V_B) sx = x * (V_R-V_L)/(W_R-W_L) - W_L * (V_R – V_L)/(W_R-W_L) + V_L sy = y * (V_T-V_B)/(W_T-W_B) – W_B * (V_T-V_B)/(W_T-W_B) + V_B

Algunos aspectos basicos Como calcular una ventana apropiada de manera automatica? Como realiza un zoom sobre la imagen? Como calcular un viewport de manera adecuada, de tal manera que no se vea distorsionada?

Calculo de la Ventana La idea básica es ver todos los objetos en el espacio del objeto Se puede tener una vista inicial y el usuario puede cambiar la vista Como obtenerlo?

Definición de la Ventana Encontrar las coordenadas extendidas en el espacio que cubra toda la escena min X max X min Y max Y

Zoom sobre la escena Viewport Definir la ventana – llamar a gluOrtho2D() con un nuevo rango Puede ser definida de manera interactiva Viewport

Viewport sin distorsión La deformación sucede cuando… La ventana en el espacio global y la ventana sobre la pantalla tienen diferentes proporciones (aspect ratios) Aspect ratio? R = W / H

Aspect Ratio: Comparacion entre el ancho y la altura de una imagen o región W Ventana Aspect Ratio = R Espacio sobre la pantalla Aspect Ratio = W / H R > W / H

Hay que conservar el aspect ratio para que no se deforme la imagen ? W Ventana Aspect Ratio = R Espacio sobre la pantalla Aspect Ratio = W / H R > W / H hay que escalar

R R > W / H glViewport(0, 0, W, W/R) W/R H W Ventana Aspect Ratio = R Espacio sobre la pantalla Aspect Ratio = W / H R > W / H glViewport(0, 0, W, W/R)

Compare aspect ratios R < W / H H W Ventana Aspect Ratio = R Espacio sobre la pantalla Aspect Ratio = W / H R < W / H

R < W / H ? H W Ventana Espacio sobre la pantalla Aspect Ratio = R Aspect Ratio = W / H R < W / H

Asociacion aspect ratios H * R H W Ventana Aspect Ratio = R Espacio sobre la Pantalla Aspect Ratio = W / H R < W / H glViewport(0, 0, H*R, H)

Cuando llamar a glViewport() ? Dos lugares: Inicialización Default: el mismo que el tamaño de la ventanas Cuando el usuario redimensiona la ventana de la pantalla

Resize (Reshape) window Void main(int argc, char** argv) { … glutDisplayFunc(display); glutReshapeFunc(resize); glutKeyboardFunc(key); } void resize () – Se llamara cuando la ventana se redimensione

Resize (reshape) window Void resize(int W, int H) { glViewport(0,0,W, H); } Esto es realizado por default por GLUT

Colocando todo junto DrawQuad() { glViewport(0,0,300,200); (300,200) glMatrixMode(GL_PROJECTION); glLoadIdentity(); gluOrtho2D(-1,1,-1,1); glBegin(GL_QUADS); glColor3f(1,1,0); glVertex2f(-0.5,-0.5); glVertex2f(+0.5,-0.5); glVertex2f(+0.5,+0.5); glVertex2f(-0.5,+0.5); glEnd(); } (300,200) (0,0) viewport

Tambien funciona… main() OpenGL Default: { … glViewport: tan grande Como la ventana de la pantalla gluOrtho2D: gluOrtho2D(-1,1,-1,1); Cada vez que se aprende una nueva OpenGLfunction, hay que tratar de conocer sus argumentos default main() { … glBegin(GL_QUADS); glColor3f(1,1,0); glVertex2f(-0.5,-0.5); glVertex2f(+0.5,0); glVertex2f(+0.5,+0.5); glVertex2f(-0.5,+0.5); glEnd(); }