import java.awt.*;
import java.awt.geom.*;
import java.awt.event.*;
import javax.swing.*;
import java.awt.image.BufferedImage;
import java.io.File;
import javax.imageio.ImageIO;
import java.io.IOException;
import java.io.*;
import java.awt.image.*;
class game1122 extends Frame{
PixelGrabber pg;
Color col;
Image img;
int w=500;
int h=500;
int red,green,blue;
int pix[]=new int[w*h];
int memor[][]=new int[h][w];
int memog[][]=new int[h][w];
int memob[][]=new int[h][w];
double alpha[]=new double[1000];
double alphar[][]=new double[500][1000];
double betar[][]=new double[1000][1000];
double alphag[][]=new double[500][1000];
double betag[][]=new double[1000][1000];
double alphab[][]=new double[500][1000];
double betab[][]=new double[1000][1000];
double fdata[]=new double[1000];
double[][] mat=new double[1000][1000];
int mx,nx,m,n,qx1,qx2;
String s1,s2,s3,s4;
int num;
game1122(){
s1="kasi.jpg";
catchimg(s1);
num=1000;
makemat(num);
seekrgb();
seekbeta();
}
public static void main(String[] args) {
game1122 f = new game1122();
f.setSize(500,500);
f.setBackground(Color.blue) ;
f.setVisible(true);
f.addWindowListener(new WindowAdapter(){public void
windowClosing(WindowEvent e){System.exit(0);}});
}
public void paint( Graphics g ) {
for (mx=0;mx<500;mx++){
for (nx=0;nx<500;nx++){
g.setColor(new Color(memor[mx][nx],memog[mx][nx],memob[mx][nx]));
g.fillRect(nx,mx,1,1);
}
}
}
void makemat(int num){
double delta;
delta=2*Math.PI/num;
for(m=0;m<num;m++){
for(n=0;n<num;n++){
mat[m][n]=Math.cos(-m*n*delta);
}
}
}
void seekalpha(int num,double[] data){
double delta,z;
delta=2*Math.PI/num;
for(m=0;m<num;m++){
z=0;
for(n=0;n<num;n++){
z=z+mat[m][n]*data[n];
}
alpha[m]=z/num;
}
}
void catchimg(String s){
img = createImage(w,h);
img = Toolkit.getDefaultToolkit().getImage(s);
pg = new PixelGrabber(img,0,0,w,h,pix,0,w);
try{pg.grabPixels();}catch(InterruptedException ie){}
m=0;
n=0;
for(int i=0;i<w*h;i++){
int p = pix[i];
col=new Color(pix[i]);
red=col.getRed();
green=col.getGreen();
blue=col.getBlue();
memor[m][n]=red;
memog[m][n]=green;
memob[m][n]=blue;
n=n+1;
if (n==w)m=m+1;
if (n==w)n=0;
}
}
void seekrgb(){
for (mx=0;mx<h;mx++){
for (nx=0;nx<w;nx++){
fdata[nx]=memor[mx][nx];
fdata[999-nx]=memor[mx][nx];
}
num=2*w;
seekalpha(num,fdata);
for (qx1=0;qx1<num;qx1++){
alphar[mx][qx1]=alpha[qx1];
}
}
for (mx=0;mx<h;mx++){
for (nx=0;nx<w;nx++){
fdata[nx]=memog[mx][nx];
fdata[999-nx]=memog[mx][nx];
}
num=2*w;
seekalpha(num,fdata);
for (qx1=0;qx1<num;qx1++){
alphag[mx][qx1]=alpha[qx1];
}
}
for (mx=0;mx<h;mx++){
for (nx=0;nx<w;nx++){
fdata[nx]=memob[mx][nx];
fdata[999-nx]=memob[mx][nx];
}
num=2*w;
seekalpha(num,fdata);
for (qx1=0;qx1<num;qx1++){
alphab[mx][qx1]=alpha[qx1];
}
}
}
void seekbeta(){
for (qx1=0;qx1<1000;qx1++){
for (mx=0;mx<h;mx++){
fdata[mx]=alphar[mx][qx1];
fdata[999-mx]=alphar[mx][qx1];
}
num=1000;
seekalpha(num,fdata);
for (qx2=0;qx2<num;qx2++){
betar[qx1][qx2]=alpha[qx2];
}
}
for (qx1=0;qx1<1000;qx1++){
for (mx=0;mx<h;mx++){
fdata[mx]=alphag[mx][qx1];
fdata[999-mx]=alphag[mx][qx1];
}
num=1000;
seekalpha(num,fdata);
for (qx2=0;qx2<num;qx2++){
betag[qx1][qx2]=alpha[qx2];
}
}
for (qx1=0;qx1<1000;qx1++){
for (mx=0;mx<h;mx++){
fdata[mx]=alphab[mx][qx1];
fdata[999-mx]=alphab[mx][qx1];
}
num=1000;
seekalpha(num,fdata);
for (qx2=0;qx2<num;qx2++){
betab[qx1][qx2]=alpha[qx2];
}
}
}
}
最終更新:2011年03月09日 23:48