Descargar la presentación
La descarga está en progreso. Por favor, espere
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
Presentaciones similares
© 2025 SlidePlayer.es Inc.
All rights reserved.