/* * @(#)ArcTest.java 1.5 98/06/29 par PYL Juillet 2005 aj 0108 javac AiletTest.java; open AiletTest.html rm *.class;javac AiletTest.java kolor.java; java AiletTest */ import java.awt.*; import java.awt.event.*; import java.applet.*; import java.io.*; // Import input-output Library public class AiletTest extends Applet { AilControls controls; // The controls AilCanvas canvas; // The drawing area public void init() { setLayout(new BorderLayout()); canvas = new AilCanvas(); add("Center", canvas); add("South", controls = new AilControls(canvas)); } public void destroy() { remove(controls); remove(canvas); } public void start() { controls.setEnabled(true); } public void stop() { controls.setEnabled(false); } public void processEvent(AWTEvent e) { if (e.getID() == Event.WINDOW_DESTROY) { System.exit(0); } } public static void main(String args[]) { Frame f = new Frame("AiletTest"); AiletTest ailetTest = new AiletTest(); ailetTest.init(); ailetTest.start(); f.add("Center", ailetTest); f.setSize(640, 480); f.show(); } public String getAppletInfo() { return "Calcul d Ailette interactive test par PYL. Can be run \neither as a standalone application by typing 'java AiletTest' \nor as an applet in the AppletViewer."; } } class AilCanvas extends Canvas { double h = 500; double k = 200; double L = 0.05; double a=0.0025; double x[],theta[],Bi; Font font; public void sauveparam() { String texte = "#OK a poursuivre!"; try{ FileOutputStream filename= new FileOutputStream("Ailette.dat"); PrintStream ffile = new PrintStream(filename); for (int i = 0; i <= getBounds().width; i++) { ffile.println(x[i] + " " + theta[i]);} } catch (IOException Ex) { System.out.println(Ex.getMessage()); } } public void dro(Graphics g, double x1,double y1,double x2,double y2){ int i1,i2,j1,j2; int rr,gg,bb; kolor kolorK; kolorK = new kolor(); Rectangle r = getBounds(); i1 = (int)(r.width*x1); i2 = (int)(r.width*x2); j1 = (int)(r.height/2 - (r.height/2.)*y1); j2 = (int)(r.height/2 - (r.height/2.)*y2); g.drawLine(i1,j1,i2,j2); } public void paint(Graphics g) { Rectangle r = getBounds(); int hlines = r.height / 10; int vlines = r.width / 10; x =new double[r.width+1]; theta=new double[r.width+1]; g.setColor(Color.pink); for (int i = 0; i <= hlines; i++) { g.drawLine(0, i * 10, r.width, i * 10); } for (int i = 0; i <= vlines-1; i++) { g.drawLine(i * 10, 0, i * 10, r.height); } Bi= (h*a/k); x[0]=0;theta[0]=1; for (int i = 1; i <= r.width; i++) { x[i]=i*1./r.width; theta[i]=ailette_sol.ture(x[i]*L,L,Bi,a); //System.out.println(x[i] + " " + theta[i]); g.setColor(Color.black); g.setFont(font); dro(g,x[i-1],theta[i-1],x[i],theta[i]); g.setColor(kolor.code(theta[i])); g.drawLine(i,r.height/2+20,i,r.height/2+20+(int)(1000*a/L)); } System.out.println("OK"); g.setColor(Color.black); g.drawLine(0, r.height/2 , r.width, r.height/2 ); g.drawLine(0, r.height , r.width, r.height ); int sx = 10; int sy = r.height - 28; g.drawString("PYL 08" , r.width-52, 14); g.drawString("Distribution de Tempˇrature le long de l'Ailette", sx, sy-18); g.drawString("T(x)",100,10); g.drawString("Bi = (h*a/k) = " + Bi + " L/(a/Sqrt(2 Bi))="+ (L/(a/Math.sqrt(2*Bi))), sx, sy); g.drawString("h = " + h, sx, sy + 14); g.drawString("k = " + k, sx+80, sy + 14); g.drawString("L = " + L, sx+160, sy + 14); g.drawString("a = " + a, sx+240, sy + 14); sauveparam(); } public void redraw(double ph, double pk, double pL, double pa) { this.h = ph; this.k = pk; this.L = pL; this.a = pa; repaint(); } } ////////////////////////////////////////// ////////////////////////////////////////// class AilControls extends Panel implements ActionListener { TextField h; TextField k; TextField L; TextField a; AilCanvas canvas; public AilControls(AilCanvas canvas) { Button b = null; this.canvas = canvas; add(h = new TextField(Double.toString(500), 8)); add(k = new TextField("200", 8)); add(L = new TextField("0.05", 8)); add(a = new TextField("0.0025", 8)); b = new Button("Calcul"); b.addActionListener(this); add(b); } public void actionPerformed(ActionEvent ev) { String label = ev.getActionCommand(); canvas.redraw(Double.parseDouble(h.getText().trim()), Double.parseDouble(k.getText().trim()), Double.parseDouble(L.getText().trim()), Double.parseDouble(a.getText().trim())); } }