Graficación IA7200-T Algoritmos Clásicos. Graficación2 Una Línea Ideal Solo podemos lograr una...
-
Upload
manuel-moreno-caballero -
Category
Documents
-
view
228 -
download
0
Transcript of Graficación IA7200-T Algoritmos Clásicos. Graficación2 Una Línea Ideal Solo podemos lograr una...
![Page 1: Graficación IA7200-T Algoritmos Clásicos. Graficación2 Una Línea Ideal Solo podemos lograr una aproximación Iluminar pixeles tan cerca a la línea ideal.](https://reader034.fdocuments.ec/reader034/viewer/2022051821/5665b47b1a28abb57c91d883/html5/thumbnails/1.jpg)
GraficaciónIA7200-T
Algoritmos Clásicos
![Page 2: Graficación IA7200-T Algoritmos Clásicos. Graficación2 Una Línea Ideal Solo podemos lograr una aproximación Iluminar pixeles tan cerca a la línea ideal.](https://reader034.fdocuments.ec/reader034/viewer/2022051821/5665b47b1a28abb57c91d883/html5/thumbnails/2.jpg)
Graficación 2
Una Línea Ideal
• Solo podemos lograr una aproximación
• Iluminar pixeles tan cerca a la línea ideal como sea posible– Pixel {0,1}
![Page 3: Graficación IA7200-T Algoritmos Clásicos. Graficación2 Una Línea Ideal Solo podemos lograr una aproximación Iluminar pixeles tan cerca a la línea ideal.](https://reader034.fdocuments.ec/reader034/viewer/2022051821/5665b47b1a28abb57c91d883/html5/thumbnails/3.jpg)
Graficación 3
Linea Ideal
• Recta y continua– Solo es posible a 0 y 45o
• Se debe interpolar• Debe ser eficiente
– Se requiere dibujar muchas!!!
![Page 4: Graficación IA7200-T Algoritmos Clásicos. Graficación2 Una Línea Ideal Solo podemos lograr una aproximación Iluminar pixeles tan cerca a la línea ideal.](https://reader034.fdocuments.ec/reader034/viewer/2022051821/5665b47b1a28abb57c91d883/html5/thumbnails/4.jpg)
Graficación 4
Linea Simple
Basada en la ecuación:
y = mx + b
Solución:
incrementa x, resuelve para y
Se require aritmética de Punto Flotante
![Page 5: Graficación IA7200-T Algoritmos Clásicos. Graficación2 Una Línea Ideal Solo podemos lograr una aproximación Iluminar pixeles tan cerca a la línea ideal.](https://reader034.fdocuments.ec/reader034/viewer/2022051821/5665b47b1a28abb57c91d883/html5/thumbnails/5.jpg)
Graficación 5
Funciona?Sí, para líneas con m<=1.
Si m>1, la línea se hace muy discontinua.
Se requiere mas de 1 pixel por columna
Solución? - simetría.
![Page 6: Graficación IA7200-T Algoritmos Clásicos. Graficación2 Una Línea Ideal Solo podemos lograr una aproximación Iluminar pixeles tan cerca a la línea ideal.](https://reader034.fdocuments.ec/reader034/viewer/2022051821/5665b47b1a28abb57c91d883/html5/thumbnails/6.jpg)
Graficación 6
Modificar algoritmo por octante
o incrementar en x si dy<dx, si no, incrementar en y
![Page 7: Graficación IA7200-T Algoritmos Clásicos. Graficación2 Una Línea Ideal Solo podemos lograr una aproximación Iluminar pixeles tan cerca a la línea ideal.](https://reader034.fdocuments.ec/reader034/viewer/2022051821/5665b47b1a28abb57c91d883/html5/thumbnails/7.jpg)
Graficación 7
Algoritmo DDA
• DDA = Digital Differential Analyser– Differencias finitas
• Tratar la linea como una ecuación paramétrica en t :
)()(
)()(
121
121
yytyty
xxtxtx
−+=−+=
),(
),(
22
11
yx
yxInicio -Fin -
![Page 8: Graficación IA7200-T Algoritmos Clásicos. Graficación2 Una Línea Ideal Solo podemos lograr una aproximación Iluminar pixeles tan cerca a la línea ideal.](https://reader034.fdocuments.ec/reader034/viewer/2022051821/5665b47b1a28abb57c91d883/html5/thumbnails/8.jpg)
Graficación 8
Algoritmo DDA
• Empezar en t = 0
• En cada paso, incrementar t en dt
• Elegir un valor para dt
• Asegurar que se nos pasan pixeles:– Implica y
• dt = maximum(dx, dy)
)()(
)()(
121
121
yytyty
xxtxtx
−+=−+=
dt
dyyy
dt
dxxx
oldnew
oldnew
+=
+=
1<dtdx
1<dtdy
![Page 9: Graficación IA7200-T Algoritmos Clásicos. Graficación2 Una Línea Ideal Solo podemos lograr una aproximación Iluminar pixeles tan cerca a la línea ideal.](https://reader034.fdocuments.ec/reader034/viewer/2022051821/5665b47b1a28abb57c91d883/html5/thumbnails/9.jpg)
Graficación 9
Algoritmo DDAline(int x1, int y1, int x2, int y2)
{float x,y;int dx = x2-x1, dy = y2-y1;int n = max(abs(dx),abs(dy));float dt = n, dxdt = dx/dt, dydt = dy/dt;
x = x1;y = y1;while( n-- ) {
point(round(x),round(y));x += dxdt;y += dydt;}
}
n – rango de t.
![Page 10: Graficación IA7200-T Algoritmos Clásicos. Graficación2 Una Línea Ideal Solo podemos lograr una aproximación Iluminar pixeles tan cerca a la línea ideal.](https://reader034.fdocuments.ec/reader034/viewer/2022051821/5665b47b1a28abb57c91d883/html5/thumbnails/10.jpg)
Graficación 10
Algoritmo DDA
• Aun se necesitan muchas operaciones de PF.– 2 ‘round’s y 2 adds por pixel.
• Hay una manera más simple?
• Podemos usar solo aritmética entera?– Mas fácil de implementar en hardware
![Page 11: Graficación IA7200-T Algoritmos Clásicos. Graficación2 Una Línea Ideal Solo podemos lograr una aproximación Iluminar pixeles tan cerca a la línea ideal.](https://reader034.fdocuments.ec/reader034/viewer/2022051821/5665b47b1a28abb57c91d883/html5/thumbnails/11.jpg)
Graficación 11
Observación en Líneas
while( n-- ) {draw(x,y);move right;if( below line )move up;}
![Page 12: Graficación IA7200-T Algoritmos Clásicos. Graficación2 Una Línea Ideal Solo podemos lograr una aproximación Iluminar pixeles tan cerca a la línea ideal.](https://reader034.fdocuments.ec/reader034/viewer/2022051821/5665b47b1a28abb57c91d883/html5/thumbnails/12.jpg)
Graficación 12
Arriba o Debajo de la Línea?
• Test para pixel• Escribir la línea en forma implícita:
0),( =++= cbyaxyxF•F<0 para puntos arriba de la línea, F>0 para puntos debajo.
![Page 13: Graficación IA7200-T Algoritmos Clásicos. Graficación2 Una Línea Ideal Solo podemos lograr una aproximación Iluminar pixeles tan cerca a la línea ideal.](https://reader034.fdocuments.ec/reader034/viewer/2022051821/5665b47b1a28abb57c91d883/html5/thumbnails/13.jpg)
Graficación 13
Testing for the side of a line.
• Need to find coefficients a,b,c.• Recall explicit, slope-intercept form :
• So:
0),( =++= cbyaxyxF
bxdx
dyybmxy +=+= so and
0..),( =+−= cydxxdyyxF
![Page 14: Graficación IA7200-T Algoritmos Clásicos. Graficación2 Una Línea Ideal Solo podemos lograr una aproximación Iluminar pixeles tan cerca a la línea ideal.](https://reader034.fdocuments.ec/reader034/viewer/2022051821/5665b47b1a28abb57c91d883/html5/thumbnails/14.jpg)
Graficación 14
Variable de Decisión
Pixel anterior(xp,yp)
Posible pixelactual
Posiblespixeles
siguientes
Evaluar F ent M
Se llama variable de decisión
)2
1,1( ++= pp yxFd
M
NE
E
![Page 15: Graficación IA7200-T Algoritmos Clásicos. Graficación2 Una Línea Ideal Solo podemos lograr una aproximación Iluminar pixeles tan cerca a la línea ideal.](https://reader034.fdocuments.ec/reader034/viewer/2022051821/5665b47b1a28abb57c91d883/html5/thumbnails/15.jpg)
Graficación 15
Variable de Decisión
Evaluatar d para el siguiente pixel. Depende si se elige E o NE:
Si se elige E:
cybxayxFd ppppnew ++++=++= )21
()2()21
,2(
Recuerden:
cybxa
yxFd
pp
ppold
++++=
++=
)21
()1(
)21
,1(
Entonces:
dyd
add
old
oldnew
+=+=
M
E
NE
PixelPrevios(xp,yp)
PosiblePixel
Actual
PosiblePixel
Siguiente
![Page 16: Graficación IA7200-T Algoritmos Clásicos. Graficación2 Una Línea Ideal Solo podemos lograr una aproximación Iluminar pixeles tan cerca a la línea ideal.](https://reader034.fdocuments.ec/reader034/viewer/2022051821/5665b47b1a28abb57c91d883/html5/thumbnails/16.jpg)
Graficación 16
Variable de Decisión
Si se elige NE:
cybxayxFd ppppnew ++++=++= )23
()2()23
,2(
So :
dxdyd
badd
old
oldnew
−+=++=
M
E
NE
PixelPrevios(xp,yp)
PosiblePixel
Actual
PosiblePixel
Siguiente
![Page 17: Graficación IA7200-T Algoritmos Clásicos. Graficación2 Una Línea Ideal Solo podemos lograr una aproximación Iluminar pixeles tan cerca a la línea ideal.](https://reader034.fdocuments.ec/reader034/viewer/2022051821/5665b47b1a28abb57c91d883/html5/thumbnails/17.jpg)
Graficación 17
Resumen del Algoritmo dePunto Medio
• Elegir entre 2 pixelse en cada iteración, dependiendo del signo de la var. de decisión
• Atualizar la variable de decisión dependiendo de que pixel es elegido
• Comenzar en (x1,y1)
• Calcular en valor inicial de d
![Page 18: Graficación IA7200-T Algoritmos Clásicos. Graficación2 Una Línea Ideal Solo podemos lograr una aproximación Iluminar pixeles tan cerca a la línea ideal.](https://reader034.fdocuments.ec/reader034/viewer/2022051821/5665b47b1a28abb57c91d883/html5/thumbnails/18.jpg)
Graficación 18
Valor Inicial de d
2
)2
1()1()
2
1,1(
11
1111
bacbyax
cybxayxFdstart
++++=
++++=++=
Pero (x1,y1) es un punto en la línea, F(x1,y1) =0
2/dxdydstart −=
Multiplicar por 2 para remover la fracción no afecta el signo
2),( 11
bayxF ++=
Inicioo: (x1,y1)
![Page 19: Graficación IA7200-T Algoritmos Clásicos. Graficación2 Una Línea Ideal Solo podemos lograr una aproximación Iluminar pixeles tan cerca a la línea ideal.](https://reader034.fdocuments.ec/reader034/viewer/2022051821/5665b47b1a28abb57c91d883/html5/thumbnails/19.jpg)
Graficación 19
Algoritmo de Bresenham
void MidpointLine(int x1,y1,x2,y2)
{
int dx=x2-x1;
int dy=y2-y1;
int d=2*dy-dx;
int increE=2*dy;
int incrNE=2*(dy-dx);
x=x1;
y=y1;
WritePixel(x,y);
while (x < x2) {if (d<= 0) {
d+=incrE;x++
} else {d+=incrNE;x++;y++;
}WritePixel(x,y);
}}
![Page 20: Graficación IA7200-T Algoritmos Clásicos. Graficación2 Una Línea Ideal Solo podemos lograr una aproximación Iluminar pixeles tan cerca a la línea ideal.](https://reader034.fdocuments.ec/reader034/viewer/2022051821/5665b47b1a28abb57c91d883/html5/thumbnails/20.jpg)
Graficación 20
Bresenham no fue el final!
Algoritmo doble de Xiaolin Wu:
El programa de dibujado es un autómata (máquina de estados finitos). i.e. Checar los siguientes dos pixeles de la línea.
Solo existen un número finito (pequeño) de posibilidades.
El algoritmo doble explota simetría dibujando simultáneamente de ambos extremos hacia el centro.
![Page 21: Graficación IA7200-T Algoritmos Clásicos. Graficación2 Una Línea Ideal Solo podemos lograr una aproximación Iluminar pixeles tan cerca a la línea ideal.](https://reader034.fdocuments.ec/reader034/viewer/2022051821/5665b47b1a28abb57c91d883/html5/thumbnails/21.jpg)
Graficación 21
Algoritmo DobleLas posiciones posibles de los dos pixeles siguientes dependen de la pendiente – pixel actual en azul:
0<=m<=½
½<=m<=1
1<=m<=2
m>2
![Page 22: Graficación IA7200-T Algoritmos Clásicos. Graficación2 Una Línea Ideal Solo podemos lograr una aproximación Iluminar pixeles tan cerca a la línea ideal.](https://reader034.fdocuments.ec/reader034/viewer/2022051821/5665b47b1a28abb57c91d883/html5/thumbnails/22.jpg)
Graficación 22
Círculos
• Podemos usar Bresenham para círculos• Usar simetría 8-tuple
PosiblePixel
Siguiente
M
E
SE
PixelPrevios
PosiblePixel
Actual
![Page 23: Graficación IA7200-T Algoritmos Clásicos. Graficación2 Una Línea Ideal Solo podemos lograr una aproximación Iluminar pixeles tan cerca a la línea ideal.](https://reader034.fdocuments.ec/reader034/viewer/2022051821/5665b47b1a28abb57c91d883/html5/thumbnails/23.jpg)
Graficación 23
Círculos
• La forma Implícita de un círculo es:
€
Si se elige SE :
dnew = dold + (2x p − 2y p + 5)
dnew = dold + (2x p + 3)
Las Funciones son ecuaciones lineales en términos de
(xp,yp)
–Llamado punto de evaluación
€
f (x, y) = (x − xc )2 + (y − yc )2 − r2