/* Bresenham algorithm (simple version) */ import java.applet.*; import java.awt.*; public class BresenS extends Applet { public void init() { setBackground(Color.lightGray); // 背景の色 resize(size()); // 画像サイズ } /* ----------------- 描画関数 -----------------: */ public void paint(Graphics g) { g.setColor(Color.black); // 線分の色 BresenDraw(20,30,220,170,g); // 線分の2端点指定 } /* ------------------------------------------------ */ public void BresenDraw(int x0,int y0,int x1,int y1,Graphics g) { int dx = x1 - x0; int dy = y1 - y0; scanX(dx,dy,2*dx,2*dy,x0,y0,g);// 第一象限の直線のみに対応 } /* ------------- Scan X Direction (for dx>dy>0) ------ */ void scanX(int dx,int dy,int dx2,int dy2,int x,int y,Graphics g) { int i, eps; eps = -dx; for (i=0; i<=dx; i++) { g.fillRect(x,y,1,1); // 点の描画 x = x + 1; // 右へ進む eps = eps + dy2; if (eps >= 0) { y = y + 1; // 上に進む eps = eps - dx2; } } } }