primitivas de despliegue 2d héctor navarro. gráficos raster la mayoría de los sistemas gráficos...
TRANSCRIPT
![Page 1: Primitivas de Despliegue 2D Héctor Navarro. Gráficos Raster La mayoría de los sistemas gráficos actuales trabajan con una memoria de video que representa](https://reader035.vdocuments.co/reader035/viewer/2022062315/5665b4341a28abb57c8ff204/html5/thumbnails/1.jpg)
Primitivas de Despliegue 2D
Héctor Navarro
![Page 2: Primitivas de Despliegue 2D Héctor Navarro. Gráficos Raster La mayoría de los sistemas gráficos actuales trabajan con una memoria de video que representa](https://reader035.vdocuments.co/reader035/viewer/2022062315/5665b4341a28abb57c8ff204/html5/thumbnails/2.jpg)
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
![Page 3: Primitivas de Despliegue 2D Héctor Navarro. Gráficos Raster La mayoría de los sistemas gráficos actuales trabajan con una memoria de video que representa](https://reader035.vdocuments.co/reader035/viewer/2022062315/5665b4341a28abb57c8ff204/html5/thumbnails/3.jpg)
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
X
Y
offset = (h-y)*w + x
mem[offset] = c.r;
mem[offset+1] = c.g;
mem[offset+2] = c.b;
![Page 4: Primitivas de Despliegue 2D Héctor Navarro. Gráficos Raster La mayoría de los sistemas gráficos actuales trabajan con una memoria de video que representa](https://reader035.vdocuments.co/reader035/viewer/2022062315/5665b4341a28abb57c8ff204/html5/thumbnails/4.jpg)
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
![Page 5: Primitivas de Despliegue 2D Héctor Navarro. Gráficos Raster La mayoría de los sistemas gráficos actuales trabajan con una memoria de video que representa](https://reader035.vdocuments.co/reader035/viewer/2022062315/5665b4341a28abb57c8ff204/html5/thumbnails/5.jpg)
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
![Page 6: Primitivas de Despliegue 2D Héctor Navarro. Gráficos Raster La mayoría de los sistemas gráficos actuales trabajan con una memoria de video que representa](https://reader035.vdocuments.co/reader035/viewer/2022062315/5665b4341a28abb57c8ff204/html5/thumbnails/6.jpg)
Líneas
• Primer enfoque: evaluar la ecuación de la recta entre x0, x1:
![Page 7: Primitivas de Despliegue 2D Héctor Navarro. Gráficos Raster La mayoría de los sistemas gráficos actuales trabajan con una memoria de video que representa](https://reader035.vdocuments.co/reader035/viewer/2022062315/5665b4341a28abb57c8ff204/html5/thumbnails/7.jpg)
Líneas
• Segundo enfoque: evitar evaluar la ecuación de la recta en cada iteración. Enfoque incremental:
(xi, yi)
(xi+1, yi+1)= (xi+1, yi+ Δy)
Δy
Δx=1
![Page 8: Primitivas de Despliegue 2D Héctor Navarro. Gráficos Raster La mayoría de los sistemas gráficos actuales trabajan con una memoria de video que representa](https://reader035.vdocuments.co/reader035/viewer/2022062315/5665b4341a28abb57c8ff204/html5/thumbnails/8.jpg)
Líneas
• Segundo enfoque: evitar evaluar la ecuación de la recta en cada iteración.
![Page 9: Primitivas de Despliegue 2D Héctor Navarro. Gráficos Raster La mayoría de los sistemas gráficos actuales trabajan con una memoria de video que representa](https://reader035.vdocuments.co/reader035/viewer/2022062315/5665b4341a28abb57c8ff204/html5/thumbnails/9.jpg)
Líneas
• Muy bien!... pero puede mejorarse?
• Eliminar aritmética flotante
• Algoritmo de Bresenham (algoritmo del punto medio)
![Page 10: Primitivas de Despliegue 2D Héctor Navarro. Gráficos Raster La mayoría de los sistemas gráficos actuales trabajan con una memoria de video que representa](https://reader035.vdocuments.co/reader035/viewer/2022062315/5665b4341a28abb57c8ff204/html5/thumbnails/10.jpg)
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
(x,y)
(x+1/2)
(y+1/2)
![Page 11: Primitivas de Despliegue 2D Héctor Navarro. Gráficos Raster La mayoría de los sistemas gráficos actuales trabajan con una memoria de video que representa](https://reader035.vdocuments.co/reader035/viewer/2022062315/5665b4341a28abb57c8ff204/html5/thumbnails/11.jpg)
Algoritmo de Bresenham
Si la pendiente está entre 0 y 1 hay únicamente dos opciones: E, NE
E
NE
![Page 12: Primitivas de Despliegue 2D Héctor Navarro. Gráficos Raster La mayoría de los sistemas gráficos actuales trabajan con una memoria de video que representa](https://reader035.vdocuments.co/reader035/viewer/2022062315/5665b4341a28abb57c8ff204/html5/thumbnails/12.jpg)
Algoritmo de Bresenham
La decisión se toma en base a la intersección entre la recta y el punto (x+1,y+0.5)
E
NE
(x,y)
(x+1,y+0.5)
![Page 13: Primitivas de Despliegue 2D Héctor Navarro. Gráficos Raster La mayoría de los sistemas gráficos actuales trabajan con una memoria de video que representa](https://reader035.vdocuments.co/reader035/viewer/2022062315/5665b4341a28abb57c8ff204/html5/thumbnails/13.jpg)
Algoritmo de Bresenham
![Page 14: Primitivas de Despliegue 2D Héctor Navarro. Gráficos Raster La mayoría de los sistemas gráficos actuales trabajan con una memoria de video que representa](https://reader035.vdocuments.co/reader035/viewer/2022062315/5665b4341a28abb57c8ff204/html5/thumbnails/14.jpg)
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
![Page 15: Primitivas de Despliegue 2D Héctor Navarro. Gráficos Raster La mayoría de los sistemas gráficos actuales trabajan con una memoria de video que representa](https://reader035.vdocuments.co/reader035/viewer/2022062315/5665b4341a28abb57c8ff204/html5/thumbnails/15.jpg)
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
![Page 16: Primitivas de Despliegue 2D Héctor Navarro. Gráficos Raster La mayoría de los sistemas gráficos actuales trabajan con una memoria de video que representa](https://reader035.vdocuments.co/reader035/viewer/2022062315/5665b4341a28abb57c8ff204/html5/thumbnails/16.jpg)
Algoritmo del punto medio para circunferencias
![Page 17: Primitivas de Despliegue 2D Héctor Navarro. Gráficos Raster La mayoría de los sistemas gráficos actuales trabajan con una memoria de video que representa](https://reader035.vdocuments.co/reader035/viewer/2022062315/5665b4341a28abb57c8ff204/html5/thumbnails/17.jpg)
Algoritmo del punto medio para circunferencias
(x, y)
![Page 18: Primitivas de Despliegue 2D Héctor Navarro. Gráficos Raster La mayoría de los sistemas gráficos actuales trabajan con una memoria de video que representa](https://reader035.vdocuments.co/reader035/viewer/2022062315/5665b4341a28abb57c8ff204/html5/thumbnails/18.jpg)
Algoritmo del punto medio para circunferencias
(x, y)
(y, x)
![Page 19: Primitivas de Despliegue 2D Héctor Navarro. Gráficos Raster La mayoría de los sistemas gráficos actuales trabajan con una memoria de video que representa](https://reader035.vdocuments.co/reader035/viewer/2022062315/5665b4341a28abb57c8ff204/html5/thumbnails/19.jpg)
Algoritmo del punto medio para circunferencias
(x, y)
(-y, x) (y, x)
![Page 20: Primitivas de Despliegue 2D Héctor Navarro. Gráficos Raster La mayoría de los sistemas gráficos actuales trabajan con una memoria de video que representa](https://reader035.vdocuments.co/reader035/viewer/2022062315/5665b4341a28abb57c8ff204/html5/thumbnails/20.jpg)
Algoritmo del punto medio para circunferencias
(x, y)
(-y, x) (y, x)
(-x, y)
![Page 21: Primitivas de Despliegue 2D Héctor Navarro. Gráficos Raster La mayoría de los sistemas gráficos actuales trabajan con una memoria de video que representa](https://reader035.vdocuments.co/reader035/viewer/2022062315/5665b4341a28abb57c8ff204/html5/thumbnails/21.jpg)
Algoritmo del punto medio para circunferencias
(x, y)
(-y, x) (y, x)
(-x, y)
(-y, -x)
(-x, -y) (x, -y)
(y, -x)
![Page 22: Primitivas de Despliegue 2D Héctor Navarro. Gráficos Raster La mayoría de los sistemas gráficos actuales trabajan con una memoria de video que representa](https://reader035.vdocuments.co/reader035/viewer/2022062315/5665b4341a28abb57c8ff204/html5/thumbnails/22.jpg)
Algoritmo del punto medio para circunferencias
En ese octante, por cada valor x habrá un único valor y
![Page 23: Primitivas de Despliegue 2D Héctor Navarro. Gráficos Raster La mayoría de los sistemas gráficos actuales trabajan con una memoria de video que representa](https://reader035.vdocuments.co/reader035/viewer/2022062315/5665b4341a28abb57c8ff204/html5/thumbnails/23.jpg)
Algoritmo del punto medio para circunferencias
En ese octante, por cada valor x habrá un único valor y
![Page 24: Primitivas de Despliegue 2D Héctor Navarro. Gráficos Raster La mayoría de los sistemas gráficos actuales trabajan con una memoria de video que representa](https://reader035.vdocuments.co/reader035/viewer/2022062315/5665b4341a28abb57c8ff204/html5/thumbnails/24.jpg)
Algoritmo del punto medio para circunferencias
En cada píxel hay dos opciones para píxel siguiente
E
SE