Sitio Web de Héctor E. Medellín Anaya |
Algoritmos para dibujar cónicasCírculoAlgoritmo basado en la ecuación del círculo
void PlotPoint(Graphics g, int xc, int yc, int x, int y) { g.drawLine(,xc + x,yc + y); g.drawLine(,xc - x,yc + y); g.drawLine(,xc + x,yc - y); g.drawLine(,xc - x,yc - y); g.drawLine(,xc + x,yc + x); g.drawLine(,xc - y,yc + x); g.drawLine(,xc + y,yc - x); g.drawLine(,xc - y,yc - x); }
void CircleSimple(Graphics g, int xc, int yc, int r){
int x,y; }
El siguiente applet permite ver el proceso paso a paso. Seleccione dos puntos sobre la cuadrícula y presione el botón "Siguiente" para ejecutar cada paso. Para borrar presione el botón "Borrar".
Algoritmo de punto medio
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); } }
El siguiente applet permite ver el proceso paso a paso. Seleccione dos puntos sobre la cuadrícula y presione el botón "Siguiente" para ejecutar cada paso. Para borrar presione el botón "Borrar".
Elipse
Algoritmo de punto medio para elipse
public void Elipse(Graphics g, int xc, int yc, int rx, int ry){
El siguiente applet permite seguir paso a paso el agoritmo de punto medio para elipses. Haga clic sobre el área cuadriculada para establecer el centro de la elipse. A continuación vuelva a hacer clic para definir los radios en x y y. El radio en x es la distancia en x entre el primer clic y el segundo y el radio en y es la distancia en y entre el primer clic y el segundo.
Parábola
Algoritmo de punto medio para parábolas
public void parabola(Graphics g,int xc, int yc, int p, int bound){ int x,y,d; int p2, p4; p2 = 2*p; p4 = 2*p2; x = 0; y = 0; d = 1 - p; //region 1 while(y < p && x<=bound){ g.drawLine(xc+x,yc+y,xc+x,yc+y); g.drawLine(xc+x,yc-y,xc+x,yc-y); if(d >= 0){ x++; d = d - p2; } y++; d = d + 2*y +1; } if(d == 1) d = 1 - p4; else d = 1 - p2; //region 2 while(x<=bound){ g.drawLine(xc+x,yc+y,xc+x,yc+y); g.drawLine(xc+x,yc-y,xc+x,yc-y); if(d <= 0){ y++; d = d + 4*y; } x++; d = d - p4; } }
El siguiente applet permite ver el algoritmo en acción. Haga clic una vez para establecer el vértice de la parábola. Haga clic una segunda vez para establecer el foco, este estará definido en la línea horizontal en donde se ha definido el vértice.
Hipérbola
Algoritmo de punto medio para hipérbola
public void hiperbola(Graphics g,int xc, int yc, long a,long b, int bound){
El siguiente applet permite seguir paso a paso el agoritmo de punto medio para hipérbola. Haga clic sobre el área cuadriculada para establecer el centro de la hipérbola. A continuación vuelva a hacer clic para definir los valores de a y b. El valor de a es la distancia en x entre el primer clic y el segundo y el valor de b es la distancia en y entre el primer clic y el segundo.
|