Logo Studenta

Semana15-Rasterizar Líneas y Círculos

¡Este material tiene más páginas!

Vista previa del material en texto

UNIDAD III
RENDERING BÁSICO
▪ Algoritmos de rasterizado de líneas y círculos.
Semana 15
Al término de la sesión, el estudiante crea y presenta un ejemplo OpenGL con algoritmos
principales de rasterizado de líneas y círculos.
Logro de 
Aprendizaje
¿Qué es la rasterización?
Responder en el foro
Rasterización
❑ Determina qué píxeles están dentro de una primitiva que se ha especificado mediante un
conjunto de vértices.
❑ Produce un conjunto de fragmentos.
❑ Los fragmentos tienen una ubicación (ubicación del pixel); otros atributos tales como color y
coordenadas de textura también pueden determinarse interpolando los valores en los vértices.
El color de un determinado pixel se determinará posteriormente usando color, textura y otras
propiedades de los vértices.
La conversión de la descripción geométrica a la imagen raster implica calcular los píxeles que deben
pintarse muestreando la forma geométrica subyacente.
Rasterización de Segmentos de Rectas
Anti - Aliasing
Escena sin Anti - Aliasing: La razón por la que aparecen
estos bordes irregulares se debe a cómo el rasterizador
transforma los datos de los vértices en fragmentos reales
detrás de la escena.
Escena con Anti - Aliasing: 
Rasterización de Segmentos de Rectas
¿Cómo dibuja OpenGL una línea?
¿cómo se determina qué píxeles es necesario pintar?
Para dibujar líneas rectas, habrá que calcular las posiciones intermedias entre los dos extremos
❑ A menor resolución, mayor es el efecto de distorsión en píxeles (Anti-Aliasing).
❑ Es necesario disponer de métodos para convertir primitivas en píxeles de la forma más
eficiente posible.
Una línea recta que, por 
ejemplo, no es ni 
horizontal ni vertical,
Rasterización de Segmentos de Rectas
Existen distintos algoritmos. En todos los casos la línea será dibujada de (x0, y0) a (x1, y1).
Además, deben tenerse en cuenta las características de las rectas a dibujar:
❑ Deben ser rectas.
❑ Deben terminar exactamente.
❑ Deben tener densidad constante.
❑ Su densidad debe ser independiente de la longitud de la misma y del ángulo de inclinación.
❑ Deben dibujarse rápidamente.
¿Cómo dibuja OpenGL una línea?
Rasterización de Segmentos de Rectas
Algoritmo básico: Algoritmo Ecuación de la Recta
El algoritmo básico utiliza la ecuación de la recta expresada como:
y = mx + b
Si la recta se dibuja desde el punto (x0, y0) hasta el punto (x1, y1), entonces, el algoritmo varia x
desde x0 hasta x1 en incrementos de una unidad.
m=
Δ𝒙
Δ𝒚
=
y1 −y0
X1 −X0
Finalmente: m es el valor de la pendiente:
Rasterización de Segmentos de Rectas
Algoritmo básico: Algoritmo Ecuación de la Recta
En OpenGl usando C++ el algoritmo de ecuación de la recta sería:
void abasico(int x0,int y0,int x1,int y1){
int x;
float dx, dy, m, b, y;
dx = x1 - x0;
dy = y1 - y0;
m = dy/dx;
b = y0 - m*x0;
y = y0;
glBegin(GL_POINTS);
for(x=x0; x<=x1; x++){
y = m*x + b;
glVertex2f(x,(int)ceil(y-0.5));
}
glEnd();
}
Practicamos
En grupos, investiga y expone otros algoritmos de rasterizado para:
Líneas:
❑ Algoritmo DDA (Grupo1 )
❑ Algoritmo de Bresenham o Punto Medio (Grupo2 y 9)
Círculos:
❑ Flood Fill (Grupo3 y 8)
❑ Curva de Bézier (Grupo4 y 5)
❑ Algoritmo Anti-Aliasing (Xiaolin Wu) (Grupo6, 7 y 10)
Presenta tu informe y el link del video grabado (participantes con cámara encendida) explicando el
algoritmo y haciendo una demostración en CodeBlocks/Visual Studio y OpenGl.
❑ ¿Qué aprendí?
❑¿Qué necesito reforzar?
¿Preguntas o dudas?
Referencias
http://graficacionitl.blogspot.com/2012/04/linea-dda-en-c-con-open-gl.html?m=1
http://payo25.blogspot.com/2015/08/algoritmo-de-bresenham-y-algoritmo-dda.html
https://programmerclick.com/article/60291818400/
https://www.academia.edu/38398063/practica_dos_opengl.docx
https://niixer.com/index.php/2021/03/06/algoritmos-de-implementacion-en-rectas/
https://docplayer.es/64338586-Universidad-simon-bolivar-computacion-grafica-i-sep-dic-2011-algoritmos-
para-dibujo-de-lineas.html
http://bankslab.berkeley.edu/members/chris/AntiAliasing/AntiAliasingInOpenGL.html
https://docplayer.es/64338586-Universidad-simon-bolivar-computacion-grafica-i-sep-dic-2011-algoritmos-para-dibujo-de-lineas.html
https://docplayer.es/64338586-Universidad-simon-bolivar-computacion-grafica-i-sep-dic-2011-algoritmos-para-dibujo-de-lineas.html
	Diapositiva 1
	Diapositiva 2
	Diapositiva 3
	Diapositiva 4
	Diapositiva 5
	Diapositiva 6
	Diapositiva 7
	Diapositiva 8
	Diapositiva 9
	Diapositiva 10
	Diapositiva 11
	Diapositiva 12
	Diapositiva 13
	Diapositiva 14
	Diapositiva 15

Continuar navegando