Bresenham's circle algorithm is derived from the midpoint circle algorithm. The algorithm can be generalized to conic sections.
package bresenhamcircle;
import javax.swing.*;
import java.awt.*;
public class Bresenhamcircle extends JFrame
{
public void paint(Graphics g)
{
//drcircle(400,400,100,g);
Bresenhamcircle(g,100,100,70) ;
line(g,200,200,300,300);
// line(g,100,100,50,50);
// line(g,50,50,0,0);
// line(g,100,100,)
}
public void line(Graphics g,int x1,int y1,int x2, int y2)
{
int dx,dy,e,i,x,y;
dx=Math.abs(x2-x1);
dy=Math.abs(y2-y1);
x=x1;
y=y1;
g.fillOval(x, y, 2, 2);
e=2*(dy-dx);
i=1;
do
{
while(e>=0)
{
y=y+1;
e=e-(2*dx);
}
x=x+1;
e=e+2*dy;
g.fillOval(x, y,2, 2);
i++;
}while(i<=dx);
}
public void Bresenhamcircle (Graphics g,int x,int y,int r)
{
int d;
x=0;
y=r;
d=3-(2*r);
g.fillOval(x,y,2,2);
while(x<=y)
{
//x=x+1;
if(d<0)
{
d= d+4*x+6 ;
}
else
{
d=d+4*(x-y)+10 ;
y--;
}
x=x+1;
g.drawOval(x+100, y+100, 2,2 );
g.drawOval(100-x, 100+y, 2,2);
g.drawOval(x+100, 100-y, 2,2 );
g.drawOval(100-x, 100-y, 2,2 );
g.drawOval(y+100, x+100, 2,2 );
g.drawOval(100-y, x+100, 2,2 );
g.drawOval(y+100, 100-x, 2,2 );
g.drawOval(100-y, 100-x, 2,2 );
}
}
public static void main(String[] args){
Bresenhamcircle b= new Bresenhamcircle();
b.setTitle("CIRCLE");
b.setSize(1000,1000);
b.setVisible(true);
b.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}
Comments
Post a Comment