Select Git revision
JavaImage.rect.java
-
Neil Gershenfeld authoredNeil Gershenfeld authored
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);
}
*/
}