Documente Academic
Documente Profesional
Documente Cultură
grfico)
Plantilla:Acerca de
ndice
[ocultar]
1 Introduccin
2 Algoritmo
3 Implementacin en Java
4 Rendimiento
5 Vase tambin
6 Referencias
7 Publicaciones
Introduccin[editar]
En Grficos por ordenador, una implementacin de hardware o software de un Analizador
Diferencial Digital (DDA) se usa para la interpolacin lineal de variables sobre un
intervalo entre un punto de comienzo y un punto de fin. Los DDAs se usan para rastreo de
lneas, triangulos y polgonos. En la implementacin ms simple del algoritmo DDA
interpola valores en intervalo [(xinicio, yinicio), (xfin, yfin)] por calculo para cada xi las ecuaciones
xi = xi1+1, yi = yi1 + y/x, donde x = xfin xinicio y y = yfin yinicio.
Algoritmo[editar]
Si m>=0 (pendiente positiva)
Si m<=1
de izquierda a derecha
* muestreo de x (x =1)
* yk+1 = redondeo(yk + m) k=1,2,...
de derecha a izquierda
* muestreo de x (x =-1)
* yk+1 = redondeo(yk - m) k=1,2,...
Si m > 1 (para evitar la aparicin de agujeros)
de izquierda a derecha
* muestreo de y (y =1)
* xk+1 = redondeo(xk + 1/m) k=1,2,...
de derecha a izquierda
* muestreo de y (y =-1)
* xk+1 = redondeo(xk - m) k=1,2,...
Si m<0 (pendiente negativa)
Si |m|<1
de izquierda a derecha
* muestreo de x (x =1)
* yk+1 = redondeo(yk + m) k=1,2,...
de derecha a izquierda
* muestreo de x (x =-1)
* yk+1 = redondeo(yk - m) k=1,2,...
Si |m| > 1 (para evitar la aparicin de agujeros)
de izquierda a derecha
* muestreo de y (y =1)
* xk+1 = redondeo(xk + 1/m) k=1,2,...
de derecha a izquierda
* muestreo de y (y =-1)
* xk+1 = redondeo(xk - m) k=1,2,...
Implementacin en Java[editar]
public void DDA(int x0, int y0, int x1, int y1, Graphics g)
{
int dx = x1 - x0;
int dy = y1 - y0;
g.drawLine( x0, y0, x1, y1);
if (Math.abs(dx) > Math.abs(dy)) {
// pendiente < 1
-1;
else
dx =
1;
// slope >= 1
// compute slope
if(dy<0)
dy =
-1;
else
dy =
1;
Rendimiento[editar]
El mtodo DDA puede ser implementado usando aritmtica de coma flotante o entero. La
implementacin nativa en coma flotante requiere una suma y un redondeo para cada valor
interpolado (Ej. coordenada x, y, profundidad, componente de color etc.) y resultado de
salida. Este proceso es solo eficiente cuando una FPU con operaciones de suma y
redondeo rpido esta disponible.
La operacin en coma fija entero requiere dos sumas para cada cliclo de salida, y en caso
de rebose de la parte fraccional, un incremento adicionar y sustraccion. La probabilidad de
que rebose la parte fraccional es proporcional al radio m de los valores inicio/fin
interpolados.
Los DDAs son muy usados para implementaciones hardware y pueden ser pipelined para
maximizar el rendimiento.
Vase tambin[editar]
Algoritmo de Bresenham
Este artculo o seccin necesita referencias que aparezcan en
una publicacin acreditada, como revistas especializadas,
monografas, prensa diaria o pginas de Internet fidedignas. Este aviso
fue puesto el 8 de mayo de 2012.
Puedes aadirlas o avisar al autor principal del artculo en su pgina de
discusin pegando: {{subst:Aviso referencias|Algoritmo de
Bresenham}} ~~~~
ndice
[ocultar]
1 Descripcin
2 Algoritmo
3 Implementacin en Java
4 Vase tambin
5 Referencias
5.1 Bibliografa
6 Enlaces externos
Descripcin[editar]
Es un algoritmo preciso para la generacin de lneas de rastreo que convierte mediante
rastreo las lneas al utilizar solo clculos incrementales con enteros que se pueden adaptar
para desplegar circunferencias y curvas. Los ejes verticales muestran las posiciones de
rastreo y los ejes horizontales identifican columnas de pixel.
Algoritmo[editar]
El algoritmo sera el siguiente:
Si 0<|m|<1
*Se capturan los extremos de la lnea y se almacena el extremo
izquierdo en (x0,y0).
*Se carga (x0,y0) en el bufer de estructura (se traza el primer
punto)
*Se calculan las constantes x,y, 2y y 2y-x y se obtiene el
valor inicial para el
parametro de decisin p0=2y-x.
Para j=0 mientras j<x
*En cada xk a lo largo de la lnea, que inicia en k=0 se efecta la
prueba siguiente:
Si pk<0
*Trazamos (xk+1,yk).
*Asignamos pk+1= pk+2y.
Sino
*Trazamos (xk+1,yk+1).
*Asignamos pk+1= pk+2y-2x.
Fin Para
Si |m|>1
*Recorremos la direccin en pasos unitarios y calculamos los
valores sucesivos
de x que se aproximen ms a la trayectoria de la lnea.
Implementacin en Java[editar]
Esta es la implementacin del algoritmo:
public void Bresenham(Graphics g,int x0, int y0, int x1, int y1) {
int x, y, dx, dy, p, incE, incNE, stepx, stepy;
dx = (x1 - x0);
dy = (y1 - y0);
/* determinar que punto usar para empezar, cual para terminar */
if (dy < 0) {
dy = -dy;
stepy = -1;
}
else {
stepy = 1;
}
if (dx < 0) {
dx = -dx;
stepx = -1;
}
else {
stepx = 1;
}
x = x0;
y = y0;
g.drawCircle( x0, y0, x0, y0);
/* se cicla hasta llegar al extremo de la lnea */
if(dx>dy){
p = 2*dy - dx;
incE = 2*dy;
incNE = 2*(dy-dx);
while (x != x1){
x = x + stepx;
if (p < 0){
p = p + incE;
}
else {
y = y + stepy;
p = p + incNE;
}
g.drawLine( x, y, x, y);
}
}
else{
p = 2*dx - dy;
incE = 2*dx;
incNE = 2*(dx-dy);
while (y != y1){
y = y + stepy;
if (p < 0){
p = p + incE;
}
else {
x = x + stepx;
p = p + incNE;
}
g.drawLine( x, y, x, y);
}
}
}
Vase tambin[editar]
Algoritmo del Punto Medio para Elipses es un algoritmo para el trazado de cnicas.
Referencias[editar]
Bibliografa[editar]
1 Introduccin
2 Algoritmo
3 Rendimiento
5 Vase tambin
6 Referencias
7 Publicaciones
Introduccin[editar]
Una circunferencia se define como un conjunto de puntos que se encuentran, en su
totalidad, a una distancia determinadar de una posicin central.
Es posible reducir el clculo al considerar la simetra de las circunferencias, la forma de la
circunferencia es similar entre cuadrantes y simetrica entre octantes.
Para aplicar el mtodo del punto medio, definimos una funcin de circunferencia como:
pk = fcircunferencia(x,y)=
Algoritmo[editar]
El algoritmo ser el siguiente:
*Se capturan el radio r y el centro de la circunferencia (xc, yc).
Rendimiento[editar]
Cdigo Ejemplo Java[editar]
Ejemplo:
void CircleMidPoint(Graphics g, int xc, int yc, int r){
int x, y, p;
x = 0;
y = r;
p = 1 - r;
PlotPoint(g,xc,yc,x,y);
/* se cicla hasta trazar todo un octante */
while (x < y){
x = x + 1;
if (p < 0)
p = p + 2*x + 1;
else {
y = y - 1;
p = p + 2*(x - y) + 1;
}
PlotPoint(g,xc,yc,x,y);
}}
Vase tambin[editar]
Algoritmo del Punto Medio para Elipses es un algoritmo para el trazado de cnicas.
Referencias[editar]
Algoritmos para dibujar Cnicas del Sitio Web de Hctor E. Medelln
Anayahttp://galia.fc.uaslp.mx/~medellin/Applets/Circulos/circulos.htm
Apuntes de Informtica Grfica Uned por Omega.