La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

Primitivas de Despliegue 2D

Presentaciones similares


Presentación del tema: "Primitivas de Despliegue 2D"— Transcripción de la presentación:

1 Primitivas de Despliegue 2D
Héctor Navarro

2 Gráficos Raster La mayoría de los sistemas gráficos actuales trabajan con una memoria de video que representa en forma de matriz la imagen a mostrar en el monitor Cada píxel es un elemento de esta matriz

3 SetPixel(x,y,c) La primitiva más básica de despliegue son puntos o píxeles. Para dibujar un píxel en la posición x, y con color c: (suponiendo un dispositivo de despliegue de w,h offset = (h-y)*w + x mem[offset] = c.r; mem[offset+1] = c.g; mem[offset+2] = c.b; Y X

4 Líneas Una línea está definida por sus dos extremos (x0,y0,x1,y1)
Es necesario diferenciar casos según la pendiente: Pendiente < 45°: por cada x hay un y

5 Líneas Una línea está definida por sus dos extremos (x0,y0,x1,y1)
Es necesario diferenciar casos según la pendiente: Pendiente < 45°: por cada y hay un x

6 Líneas Primer enfoque: evaluar la ecuación de la recta entre x0, x1:

7 Líneas Segundo enfoque: evitar evaluar la ecuación de la recta en cada iteración. Enfoque incremental: (xi+1, yi+1)= (xi+1, yi+ Δy) Δy (xi, yi) Δx=1

8 Líneas Segundo enfoque: evitar evaluar la ecuación de la recta en cada iteración.

9 Líneas Muy bien!... pero puede mejorarse? Eliminar aritmética flotante
Algoritmo de Bresenham (algoritmo del punto medio)

10 Algoritmo de Bresenham
Cada píxel se considera un cuadrado Se supone que el centro de cada píxel es una coordenada entera La frontera entre cada píxel está en la posición x+1/2 (y+1/2) (x,y) (x+1/2)

11 Algoritmo de Bresenham
NE E Si la pendiente está entre 0 y 1 hay únicamente dos opciones: E, NE

12 Algoritmo de Bresenham
NE (x+1,y+0.5) E (x,y) La decisión se toma en base a la intersección entre la recta y el punto (x+1,y+0.5)

13 Algoritmo de Bresenham

14 Algoritmo de Bresenham
Algunos detalles: Ordenar los puntos para que siempre x0 < x1 (o y0 < y1) Hacer un análisis parecido cuando m>1. En este caso las opciones son N, NE

15 Algoritmo del punto medio para circunferencias
Por simetría es posible dibujar únicamente un octavo del círculo centrado en (0,0) La función SetPixelCircle(x,y,xc,yc) dibuja un píxel de un círculo centrado en xc, yc

16 Algoritmo del punto medio para circunferencias

17 Algoritmo del punto medio para circunferencias
(x, y)

18 Algoritmo del punto medio para circunferencias
(x, y) (y, x)

19 Algoritmo del punto medio para circunferencias
(x, y) (-y, x) (y, x)

20 Algoritmo del punto medio para circunferencias
(-x, y) (x, y) (-y, x) (y, x)

21 Algoritmo del punto medio para circunferencias
(-x, y) (x, y) (-y, x) (y, x) (y, -x) (-y, -x) (-x, -y) (x, -y)

22 Algoritmo del punto medio para circunferencias
En ese octante, por cada valor x habrá un único valor y

23 Algoritmo del punto medio para circunferencias
En ese octante, por cada valor x habrá un único valor y

24 Algoritmo del punto medio para circunferencias
SE En cada píxel hay dos opciones para píxel siguiente


Descargar ppt "Primitivas de Despliegue 2D"

Presentaciones similares


Anuncios Google