Hint
public SImage drawX( SImage oldPic ) { int [][] pixels = oldPic.getPixelArray(); int width=pixels.length; int height=pixels[0].length; double slope=(double)height/width; int x=0; while (x< width){ int y=(int)Math.round(x*slope); pixels[x][y]=0; x++; } // you still need to implement the other diagonal // by symmetry, you can just add to the // loop above. For example, if you have a 100 x 100 grid // if (2,2) is a point, then (97,2) is another..... // so is (2, 97).. just make a new y from adapting x // be careful of OBOE's.. the width is 100, but the last pixel is 99 return new SImage(pixels); }
A full explanation of using slope can be found at http://www.cs.unc.edu/~mcmillan/comp136/Lecture6/Lines.html