Está en la página 1de 7

Universidad Latina de Panam, Sede de Santiago

Facultad de Ciencias Computacionales y Telecomunicaciones


Ingeniera en Sistemas Informticos
Curso: Grficas Computacionales
Tema: Gua para la Resolucin de Problemas de Discretizacin de
Primitivas en 2D

Profesor: Ing. Milton Serrano C.


DISCRETIZACIN DE LINEAS
1. Algoritmo DDA:
Valores iniciales:
Calcular la pendiente:

y1 y0
x1 x0

Valores de la tabla:
X = X +1 (En cada nueva fila va aumentando en un (1) valor).
Yk+1 = Y + m (En cada nueva fila va aumentado al sumarle en valor de m, es decir, de la
pendiente) .
Y = Redondear ( Yk+1 ). Se redondea el valor de Yk+1 y se usa ese valor para la posicin en Y.
Ejemplo #1:
Discretizar la lnea (1,1) hasta (6,3)
X
1
2
3
4
5
6

Yk+1
1
1.4
1.8
2.2
2.6
3.0

Y
1
1
2
2
3
3

2. Algoritmo Bresenham:
Valores iniciales:
x = x1 - x0
y = y1 - y0
P0 = 2y - x
Caso especial:
Si el valor de x < y, entonces se intercambian los valores de x y y, es decir:
X = Y y Y = X , solamente para hacer los clculos se hace esto, ya que al final, despus de
calcular todos los valores de la tabla, se deben intercambiar las coordenadas x y y.
Valores de la tabla:
K = X +1 (En cada nueva fila va aumentando en un (1) valor, inicialmente vale 0).
Pk+1 = Inicialmente, equivale al valor de P0, y luego se evalua su resultado y calcula un nuevo
valor para Pk+1, as:
Si Pk+1 > 0 Entonces +
Pk+1 = Pk + 2y 2x
La coordenada queda as: (X++, Y++). X y Y aumentan un valor.
Si Pk+1 < 0 Entonces Pk+1 = Pk + 2y
La coordenada queda as: (X++, Y). X aumentan un valor y Y se mantiene igual.
Ejemplo #1:
Discretizar la lnea (1,1) hasta (6,3)
K
0
1
2
3
4

Pk+1
-1
3
-3
1
-5

(Xk+1, Yk+1)
(2,1)
(3,2)
(4,2)
(5,3)
(6,3)

DISCRETIZACIN DE CIRCUNFERENCIAS
1. Algoritmo del Punto Medio:
Valores iniciales:
Si el Radio es un valor decimal o fraccionario:
P0 = 1.25 - Radio
Si el Radio es un valor entero:
P0 = 1 - Radio
Valores de la tabla:
K = En cada nueva fila va aumentando en un (1) valor, inicialmente vale 0.
Y = Radio
Pk+1 = Inicialmente, equivale al valor de P0, y luego se evala su resultado y calcula un nuevo
valor para Pk+1, as:
Si Pk+1 > 0 Entonces
Pk+1 = Pk + 2xk 2yk + 5
La coordenada queda as: (X++, Y--). X aumenta y Y disminuye.
Si Pk+1 < 0 Entonces
Pk+1 = Pk + 2xk + 3
La coordenada queda as: (X++, Y). X aumentan un valor y Y se mantiene igual.
Los clculos terminan cuando X y Y son iguales. Luego por simetra, se calculan los otros 7
octantes de la circunferencia.
Caso Especial:
Si la posicin inicial del centro de la circunferencia es diferente a (0 , 0), se le debe sumar a cada
valor de las coordenadas X y Y de la tabla el valor de la posicin inicial.

Calcular el II, III y IV Cuadrante:


II Cuadrante: Se cambian todos los valores de X a negativos, se usan los mismos valores
del primer cuadrante calculado.
III Cuadrante: Se cambian todos los valores de X y Y a negativos, y se intercambian las
filas de Y a X y viceversa, usando los valores del primer cuadrante calculado.
IV Cuadrante: Se intercambian las filas de Y a X y viceversa, usando los valores del primer
cuadrante calculado.
Ejemplo #1:
Discretizar la circunferencia con Radio = 10, con posicin inicial en = (0 , 0)
P0 = -9
K
0
1
2
3
4
5
6

Pk+1
-9
-6
-1
6
-3
8
5

(Xk+1, Yk+1)
(1,10)
(2,10)
(3,10)
(4,9)
(5,9)
(6,8)
(7,7)

Grfica del I Cuadrante de la Circunferencia:

DISCRETIZACIN DE ELIPSES
1. Algoritmo del Punto Medio:
Regin #1:
Valores iniciales:
Calcular el valor inicial de P10, para la regin #1:
P10 = r2y r2x(ry) + (r2x)
Valores de la tabla:
K = En cada nueva fila va aumentando en un (1) valor, inicialmente vale 0.
P1k+1 = Inicialmente, equivale al valor de P10, y luego se evala su resultado y calcula un nuevo
valor para P1k+1, as:
Si P1k+1 > 0 Entonces
P1k+1 = P1k + 2r2y(xk+1) - 2r2x(yk+1) + r2y
La coordenada queda as: (X++, Y--). X y Y aumentan un valor.
Si P1k+1 < 0 Entonces
P1k+1 = P1k + 2r2y(xk+1) + r2y
La coordenada queda as: (X++, Y). X aumentan un valor y Y mantiene su valor.
Valores adicionales:
2r2y(xk+1)
2r2x(yk+1)
Los clculos terminan cuando 2r2y(xk+1) es mayor que 2r2x(yk+1) .Luego se prosigue con el
calculo de la regin #2 de la elipse.
Caso Especial:
Si la posicin inicial del centro de la elipse es diferente a (0 , 0), se le debe sumar a cada valor de
las coordenadas X y Y de la tabla el valor de la posicin inicial.

Regin #2:
Valores iniciales:
Se calcula el valor inicial de P20, para la regin #2, utilizando la ltima coordenada en la regin
#1, as:
P20 = r2y(x0 + )2 + r2x(y0 - 1)2 - r2x(r2y)
Nota: Si el valor resultante de P20 es decimal, se debe redondear su valor a un entero.
Valores de la tabla:
K = En cada nueva fila va aumentando en un (1) valor, inicialmente vale 0.
P2k+1 = Inicialmente, equivale al valor de P20, y luego se evala su resultado y calcula un nuevo
valor para P2k+1, as:
Si P2k+1 > 0 Entonces
P2k+1 = P2k + 2r2x(yk+1) + r2x
La coordenada queda as: (X, Y--). X se mantiene igual y Y disminuye.
Si P2k+1 < 0 Entonces
P2k+1 = P2k + 2r2y(xk+1) - 2r2x(yk+1) + r2x
La coordenada queda as: (X++, Y--). X aumentan un valor y Y disminuye su valor.
Los clculos terminan cuando Y = 0.
Caso Especial:
Si la posicin inicial del centro de la elipse es diferente a (0 , 0), se le debe sumar a cada valor de
las coordenadas X y Y de la tabla el valor de la posicin inicial.
Calcular el II, III y IV Cuadrante:
II Cuadrante: Se cambian todos los valores de X a negativos, se usan los mismos valores
del primer cuadrante calculado.
III Cuadrante: Se cambian todos los valores de X y Y a negativos, y se intercambian las
filas de Y a X y viceversa, usando los valores del primer cuadrante calculado.
IV Cuadrante: Se intercambian las filas de Y a X y viceversa, usando los valores del primer
cuadrante calculado.

Ejemplo #1:
Discretizar la elipse con Rx = 8, Ry = 15, con el centro en = (10 ,12)
Valores para la Regin #1:
K
0
1
2
3

P1k+1
-719
-44
1081
864

(Xk+1, Yk+1)
1,15
2,15
3,14
4,13

2r2y(xk+1)
450
900
1350
1800

2r2x(yk+1)
1920
1920
1792
1664

Valores para la Regin #2:


K
0
1
2
3
4
5
6
7
8
9
10
11
12

P2k+1
-628
150
-1194
290
-798
1392
560
-144
2880
2432
2112
1920
1856

(Xk+1, Yk+1)
5, 12
5, 11
6, 10
6, 9
7, 8
7, 7
7, 6
8, 5
8, 4
8, 3
8, 2
8, 1
8, 0

También podría gustarte