import java.applet.*; import java.awt.*; import java.awt.image.*; public class MainClass extends Applet { final int W=320, H=240; Image img = null; MemoryImageSource mis = null; public void init() { this.setSize(W,H); this.setBackground(Color.GRAY); int pixels[] = new int[W*H]; for (int i=0; i < W*H; i++) pixels[i] = 255 << 24 | 255 << 16 | 255 << 8 | 255; int color[] = new int[3]; color[0] = 200; color[1] = 200; color[2] = 200; pixels = wirePolygon( new Point(50,50), new Point(200,100), new Point(70,220), color, pixels); mis = new MemoryImageSource(W, H, pixels, 0, W); img = createImage(mis); } public void paint (Graphics g) { g.drawImage(img,0,0,this); } //----------------------------------------------------------------------- // Draw wire polygon //----------------------------------------------------------------------- public int[] wirePolygon( Point fpP1, Point fpP2, Point fpP3, int fpColor[], int fpPixels[]) { fpPixels = line(fpP1, fpP2, fpColor, fpPixels); fpPixels = line(fpP2, fpP3, fpColor, fpPixels); fpPixels = line(fpP3, fpP1, fpColor, fpPixels); return fpPixels; } //----------------------------------------------------------------------- //----------------------------------------------------------------------- // Draw line //----------------------------------------------------------------------- public int[] line( Point fpP1, Point fpP2, int fpColor[], int fpPixels[]) { int iDx = fpP2.x - fpP1.x, iDy = fpP2.y - fpP1.y, iXstep = 0, iYstep = 0, iX = fpP1.x, iY = fpP1.y; if (iDx >= 0) { iXstep = 1; } else { iXstep = -1; iDx = -iDx; } if (iDy >= 0) { iYstep = 1; } else { iYstep = -1; iDy = -iDy; } int iDx2 = iDx << 1; int iDy2 = iDy << 1; if (iDx > iDy) { int iError = iDy2 - iDx; for (int i=0; i <= iDx; i++) { fpPixels[iY*W+iX] = 255<<24 | fpColor[0] << 16 | fpColor[1] << 8 | fpColor[2]; if (iError >= 0) { iError -= iDx2; iY += iYstep; } iError += iDy2; iX += iXstep; } } else { int iError = iDx2 - iDy; for (int i=0; i <= iDy; i++) { fpPixels[iY*W+iX] = 255<<24 | fpColor[0] << 16 | fpColor[1] << 8 | fpColor[2]; if (iError >= 0) { iError -= iDy2; iX += iXstep; } iError += iDx2; iY += iYstep; } } return fpPixels; } //----------------------------------------------------------------------- }