Skip to content
Snippets Groups Projects
Select Git revision
  • eb9aac719924923958222c63f9be2e9ab354339b
  • master default protected
2 results

JavaImage.rect.java

Blame
  • JavaImage.rect.java 3.62 KiB
    //
    // JavaImage.java
    // (c) Neil Gershenfeld  2/6/03
    // demonstrates Java by animating sin(k*r)/k*r
    //
    
    
    import java.awt.*;
    import java.awt.image.*;
    import javax.swing.*;
    //import java.awt.image.BufferedImage;
    
    import java.awt.geom.*;
    
    public class JavaImage extends JApplet implements Runnable {
       
       static final int NPTS = 100;
       static final int NSTEPS = 100;
       static final int NGRAYS = 100;
       Thread T;
       WritableRaster R;
       BufferedImage I;
       DataBufferInt B;
       Graphics G;
       Color ColorTable[] = new Color[NGRAYS];
       
       public static void main(String args[]) {
    	  JavaImage J = new JavaImage();
    	  JFrame F = new JFrame("JavaImage");
    	  F.setSize(2*NPTS,2*NPTS);
    	  J.init();
    	  F.getContentPane().add(J);
    	  F.setVisible(true);
    	  J.start();
       }
       
       class ImagePanel extends JPanel {
    	   public void paintComponent(Graphics g) {
    		   super.paintComponent(g);
    		   Graphics2D g2d = (Graphics2D) g;
    //		   ColorModel model = I.getColorModel();
    //		   Color imagecolor = Color.red;
    //		   int argb = imagecolor.getRGB();
    //		   Object colordata = model.getDataElements(argb, null);
    //		   int[] bleu = { 123, 234, 255};
    		   // rects?
    		   double xr, yr, r;
    		   int gray;
    		   int step;
    		   for (step = 1; step < NSTEPS; ++step) {
    			   System.out.println(step);
    			   for (int i = 0; i < NPTS; i++) {
    				   for (int j = 0; j < NPTS; j++) {
    					   xr = (2.0*i + 1.0 - NPTS)/NPTS;
    					   yr = (2.0*j + 1.0 - NPTS)/NPTS;
    					   r = step* 20.0 * Math.sqrt(xr*xr + yr*yr)/NSTEPS;
    					   gray = (int) (255*(0.5+Math.sin(r)/r)/1.5);
    					   g2d.setColor(new Color(gray, gray, gray));
    					   g2d.drawRect(2*i,2*j,2,2);
    				   }
    			   }
    		   }
    //		   g2d.drawImage(I, 0, 0, null);		   
    	   }
       }
    //				   R.setPixel(i,j,(byte) 100);
    //			   R.setPixel( i, j, bleu);
    //				   R.setDataElements(i,j,colordata);
    //				   R.setDataElements(i,j,bleu);
    		   //R.setPixel(11,21,128);
       
       public void init() {
    	   Container C = getContentPane();
    	   C.add(new ImagePanel());
    	   I = new BufferedImage(NPTS,NPTS,BufferedImage.TYPE_BYTE_GRAY);
    	   R = I.getRaster();
       }
       
       public void start() {
    	   if (T == null) {
    		   T = new Thread(this);
    		   T.start();
    	   }
       }
       
       public void stop() {
    	   if (T != null) {
    		   T = null;
    	   }
       }
       
       public void run() {
    	   while (true) {
    		   repaint();
    		   try {Thread.sleep(10);}
    		   catch (InterruptedException e) { };
    	   }
       }
    
    /*      
       public synchronized void paint(Graphics g) {
          double r, xr, yr;
          int gray, i, j, step;
          Graphics2D g2d = (Graphics2D) g;
    //      BufferedImage I = new BufferedImage(TYPE_BYTE_GRAY
          BufferedImage I = (BufferedImage) createImage(100,100);
          //bufferedimage raster data write writableraster databuffer
          //getraster
    Graphics2D Ig = I.createGraphics();
            //Ig.drawImage(I, 0, 0, null);
    	 Ig.setFont(new Font("Dialog", Font.PLAIN, 10));
       Ig.setColor(Color.black);
       Ig.drawString("BufferedImage", 4, 12);
            for (step = 1; step < NSTEPS; ++step) {
                for (i = 0; i < NPTS; ++i) {
                   for (j = 0; j < NPTS; ++j) {
                      xr = (2.0*i + 1.0 - NPTS)/NPTS;
                      yr = (2.0*j + 1.0 - NPTS)/NPTS;
                      r = step * 20.0 * Math.sqrt(xr*xr + yr*yr)/NSTEPS;
                      gray = (int) (NGRAYS*100*(0.5+Math.sin(r)/r)/1.5);
    		  //I.setRGB(i,j,0xffff3412);
    		  I.setRGB(i,j,gray);		  
                      }
                   }
            g2d.drawImage(I, 0, 0, this); 
           }
       }
    */
    /*       
       public void update(Graphics g) {
          paint(g);
          }
    */      
       }