/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package javaapplication3;
/**
*
* @author thomas
*/
import java.awt.*;
import java.awt.Color;
import java.awt.event.*;
import java.applet.*;
/**
*
* @author thomas
*/
public class grafil09 extends Applet implements
MouseListener, MouseMotionListener {
int mouseX1 = 0, mouseY1 = 0,mouseX2 = 0, mouseY2 = 0;
int mouseX1o=0,mouseY1o=0,mouseX2o=0,mouseY2o=0;
int clicko=0,click=0,click2=0,normal=2,ex=1,abso=0,pressed=2,release=0;
double pattern=250,paramx=(double)1.8,paramy=(double)1.2;
double[] oparamx= new double[43];
double[] oparamy= new double[43];
double[] opattern=new double[43];
Graphics g;
int red=0,green=0,blue=0; Color Co;
// die Methode wird beim Start des Applets aufgerufen
/**
*
*/
@Override
public void init() {
resize(600, 600);
addMouseListener(this);
addMouseMotionListener(this);
}
/**
*
* @param g
*/
@Override
public void paint(Graphics g) {
int zb1;
double x,y,xx,yy,zz,zx,zy,zxx,zyy,z,zb;
if(normal==2){
for(x=0;x<601;x++){
xx=x/pattern- paramx;
for(y=0;y<601;y++){
yy= y / pattern - paramy;
z=0;zz=0;
zy=0;zx=0;// zx=xx;zy=yy;
while(zz<4 && z<1021){
zxx= (zx * zx) - (zy * zy) +xx;//+0.4,
zyy= (2* zx * zy) +yy;//-0.3
zz=zxx*zxx+zyy*zyy;
z++;
zx=zxx;zy=zyy;
}
zb=z;
zb1=(int) zb;
p3(zb1);
//g.setColor(new Color(Integer.parseInt(dataf[zb1], 16)));für #rgb code
g.setColor(new Color(red,green,blue));
g.drawLine((int)x, (int)y, (int)x, (int)y);
}
clicko=0;click=0;click2=0;normal=2;abso=0;pressed=2;
}
}else {paint2(g);}
normal=2;
}
/**
*
* @param g
*/
public void paint2(Graphics g) {
g.setXORMode(Color.white);
if(clicko==2)
{
g.drawLine(mouseX1o,mouseY1o,mouseX2o,mouseY1o);
g.drawLine(mouseX2o,mouseY1o,mouseX2o,mouseY2o);
g.drawLine(mouseX2o,mouseY2o,mouseX1o,mouseY2o);
g.drawLine(mouseX1o,mouseY2o,mouseX1o,mouseY1o);
}
if(click2!=2){
g.drawLine(mouseX1,mouseY1,mouseX2,mouseY1);
g.drawLine(mouseX2,mouseY1,mouseX2,mouseY2);
g.drawLine(mouseX2,mouseY2,mouseX1,mouseY2);
g.drawLine(mouseX1,mouseY2,mouseX1,mouseY1);
}
mouseX1o=mouseX1;
mouseX2o=mouseX2;
mouseY1o=mouseY1;
mouseY2o=mouseY2;
clicko=click;
click2=0;pressed=2;
}
/**
*
* @param ganzz
*/
//Zweidimensionaler Farbengenerator
public void p3(int ganzz)
{
if(ganzz<20)
{
red=255;
green=255;
blue=255;
}
if(ganzz<256 && ganzz>=20)
{
red=ganzz;
green=0;
blue=128;
}
if(ganzz>=256 && ganzz<512)
{
red=255;
green=ganzz-256;
blue=128;
}
if(ganzz>=512 && ganzz<768)
{
red=767-ganzz;
green=255;
blue=128;
}
if(ganzz>=768 && ganzz<1022)
{
red=0;
green=1023-ganzz;
blue=128;
}
}
/**
*
* @param me
*/
public void mouseClicked(MouseEvent me)
{
if (me.getButton() == MouseEvent.BUTTON3 && release>0)
{release--; showStatus("Tiefe: " +release+" Pattern: "+pattern);
pattern=opattern[release];
paramx=oparamx[release];
paramy=oparamy[release];
repaint();ex=1;
}
}
/**
*
* @param me
*/
public void mouseEntered(MouseEvent me)
{
click=0;ex=1;pressed=2;
}
/**
*
* @param me
*/
public void mouseExited(MouseEvent me)
{
pressed=2;
g=getGraphics();
normal=1;
click=0;
clicko=2;
click2=2;
ex=2;
paint(g);
}
/**
*
* @param me
*/
public void mousePressed(MouseEvent me)
{
pressed=5;
mouseX1 = me.getX();
mouseY1 = me.getY();
click = 2;
}
/**
*
* @param me
*/
public void mouseReleased(MouseEvent me)
{
abso=(mouseX2-mouseX1)*(mouseY2-mouseY1);
abso=java.lang.Math.abs(abso);
if(ex!=2 && abso>10 && pressed==2){
normal=1;
g=getGraphics();
clicko=2;
click2=2;
paint(g);
double newPosX=0,newPosY=0,newDX;
int temp;
if(mouseX1>mouseX2){temp=mouseX1;mouseX1=mouseX2;mouseX2=temp;}
if(mouseY1>mouseY2){temp=mouseY1;mouseY1=mouseY2;mouseY2=temp;}
newPosX=-((double)mouseX1/pattern-paramx);
newPosY=-((double)mouseY1/pattern-paramy);
newDX=(double)mouseX2-(double)mouseX1;
newDX=java.lang.Math.abs(newDX)/pattern;
oparamx[release]=paramx;
oparamy[release]=paramy;
opattern[release]=pattern;
paramx=newPosX;
paramy=newPosY;
pattern=600/newDX;
mouseX1=0;
mouseY1=0;
mouseX2=0;
mouseY2=0;
mouseX1o=0;
mouseY1o=0;
mouseX2o=0;
mouseY2o=0;
release++;
showStatus("Tiefe: " +release+" Pattern: "+pattern);
repaint();}ex=1;
}
/**
*
* @param me
*/
public void mouseDragged(MouseEvent me)
{
pressed=2;
g=getGraphics();
normal=1;
if(click==2){
mouseX2 = me.getX();
mouseY2 = me.getY();
paint(g);
}
}
/**
*
* @param me
*/
public void mouseMoved(MouseEvent me) {
pressed=2;
}}