![]() |
Sample Of Java Source
/**
Program: Julia5
Purpose: Reccurence figure
@author: Sanae.Masasi
@version: 1.00; 14.June.96
*/
import java.awt.*;
import java.applet.*;
public class Julia5 extends Applet{
CtrlJ5 controls;
public void init(){
setLayout(new BorderLayout());
CvsJ5 c = new CvsJ5();
add("Center",c);
add("South",controls = new CtrlJ5(c));
}
public void start(){
controls.enable();
}
public void stop(){
controls.disable();
}
public boolean handleEvent(Event e){
if(e.id == Event.WINDOW_DESTROY){
System.exit(0);
}
return false;
}
}
class CvsJ5 extends Canvas{
public static final int MAXPRD = 8;
double Box = 0.01d;
int calcNum = 30;
int step = 3;
int colStep = 255 / MAXPRD;
double CX = 0d,CY = 0d;
double W = 1.2d;
double lx1 = CX - W,lx2 = CX + W;
double ly1 = CY - W,ly2 = CY + W;
Rectangle r;
double scale;
double x[] = new double [calcNum + 1];
double y[] = new double [calcNum + 1];
Font font = new Font("TimesRoman",Font.PLAIN,10);
public void paint(Graphics g) {
int rectW = 50;
r =bounds();
scale = 2 * W / r.height;
g.setColor(Color.white);
g.fillRect(0,0,r.height,r.height);
g.setColor(Color.lightGray);
g.fillRect(r.height,0,r.width - r.height,r.height);
g.setColor(Color.black);
g.setFont(font);
g.drawString("x=" + (int)(lx1 * 100)/100d +
" ~ " + (int)(lx2 * 100)/100d,10,10);
g.drawString("y=" + (int)(ly1 * 100)/100d +
" ~ " + (int)(ly2 * 100)/100d,10,20);
int row,col;
String str;
for(int i = 0 ;i <= MAXPRD + 1;i ++){
row = i % 5;
if(i < 5){col = 0;}else{col = 1;}
if(i == 0){
g.setColor(new Color(255 - i * colStep,i * colStep,0));
str = "converge";
}else if(i == MAXPRD ){
g.setColor(Color.black);
str = "prd>" + MAXPRD + ",chaos";
}else if(i == MAXPRD + 1){
g.setColor(Color.white);
str = "diverge";
}else{
g.setColor(new Color(255 - i * colStep,i * colStep,0));
str = "piriod=" + (i + 1);
}
g.fillRect(r.height + col * rectW + 50,
row * rectW + 20,35,35);
g.setColor(Color.black);
g.setFont(font);
g.drawString(str,r.height + col * rectW + 50,
row * rectW + 15);
}
}
public void update(Graphics g){
g.setColor(Color.white);
g.fillRect(0,0,r.height,r.height);
g.setColor(Color.black);
g.setFont(font);
g.drawString("x=" + (int)(lx1 * 100)/100d +
" ~ " + (int)(lx2 * 100)/100d,10,10);
g.drawString("y=" + (int)(ly1 * 100)/100d +
" ~ " + (int)(ly2 * 100)/100d,10,20);
boolean drawflag = false;
for(int xx = 0 ;xx <= r.height;xx += step){
x[0] = lx1 + xx * scale;
for(int yy = 0; yy <= r.height ;yy += step){
y[0] = ly2 - yy * scale;
for (int k = 1;k<= calcNum;k++){
x[k] = x[k-1] * x[k-1] * x[k-1]
-3 * x[k-1] * y[k-1] * y[k-1] +x[0];
y[k] = 3 * x[k-1] * x[k-1] * y[k-1]
-y[k-1] * y[k-1] * y[k-1] + y[0];
if(x[k] * x[k] + y[k] * y[k] >= 4.0){
drawflag = false;
break;
}
drawflag =true;
}
if(drawflag){
for(int k = 1;k <= MAXPRD;k++){
if(Math.abs(x[calcNum] - x[calcNum - k]) < Box
&&
Math.abs(y[calcNum] - y[calcNum - k]) < Box){
g.setColor(new Color(255 - (k -1) * colStep,
(k - 1) * colStep,0));
g.drawLine(xx,yy,xx,yy);
break;
}else{
g.setColor(Color.black);
g.drawLine(xx,yy,xx,yy);
}
}
}
}
}
}
public void redraw(double CX,double CY,double W,int step){
this.lx1 = CX - W; this.lx2 = CX + W;
this.ly1 = CY - W; this.ly2 = CY + W;
this.scale = 2 * W / r.height;
this.step = step;
repaint();
}
}
class CtrlJ5 extends Panel{
CvsJ5 canvas;
Choice choiceCX,choiceCY,choiceW,choiceStep;
Label labelC,labelW,labelStep;
Font font = new Font("TimesRoman",Font.ITALIC,12);
public CtrlJ5(CvsJ5 canvas){
this.canvas = canvas;
setLayout(new FlowLayout());
labelC = new Label("center ",Label.LEFT);
labelC.setFont(font);
add(labelC);
choiceCX = new Choice();
for(int a = -200;a <= 200;a ++){
choiceCX.addItem(""+a/100d);
}
choiceCX.select(String.valueOf(canvas.CX));
add(choiceCX);
choiceCY = new Choice();
for(int a = -200;a <= 200;a ++){
choiceCY.addItem(""+a/100d);
}
choiceCY.select(String.valueOf(canvas.CY));
add(choiceCY);
labelW = new Label("width ",Label.LEFT);
labelW.setFont(font);
add(labelW);
choiceW = new Choice();
for(int a = 1;a <= 200;a ++){
choiceW.addItem(""+a/100d);
}
choiceW.select(String.valueOf(canvas.W));
add(choiceW);
labelStep = new Label("step ",Label.LEFT);
labelStep.setFont(font);
add(labelStep);
choiceStep = new Choice();
for(int a = 1;a <= 4;a ++){
choiceStep.addItem(""+a);
}
choiceStep.select(String.valueOf(canvas.step));
add(choiceStep);
add(new Button("DRAW"));
}
public boolean action(Event ev, Object arg) {
if (ev.target instanceof Button) {
String tempCX,tempCY,tempW,tempStep;
Double getCX,getCY,getW;
tempCX = choiceCX.getSelectedItem();
getCX = Double.valueOf(tempCX);
tempCY = choiceCY.getSelectedItem();
getCY = Double.valueOf(tempCY);
tempW = choiceW.getSelectedItem();
getW = Double.valueOf(tempW);
tempStep = choiceStep.getSelectedItem();
canvas.redraw(getCX.doubleValue(),getCY.doubleValue(),
getW.doubleValue(),Integer.parseInt(tempStep));
}
return false;
}
}
![]() |