/***************************************************************/ /* N O R M P L O T */ /***************************************************************/ import java.applet.*; /* Bindet Lib ein */ import java.awt.*; public class dbar extends Applet /* erbt von Applet */ { /***************************************************************/ /***************** Variablendecaration *************************/ /***************************************************************/ double pi ; int N; int maxx ; int maxy ; double[] func =new double[500]; int[] bar_wert=new int[9] ; /* Drawbar Werte */ int bar_nr ; /* Nr des angeklickten Bars */ /***************************************************************/ /****************** Basismethoden ******************************/ /***************************************************************/ public void init() /* Aufruf beim Start */ { int i; BorderLayout Layout=new BorderLayout(); Button B_reset=new Button("reset"); setLayout(Layout); add(B_reset,BorderLayout.SOUTH); B_reset.resize(40,40); N = 500 ; pi = 3.14 ; maxx = getSize().width ; maxx=maxx/2; maxy = getSize().height ; for(i=0; i<9; i++) bar_wert[i]=0; bar_wert[2]=maxy/2; bar_wert[3]=maxy/5*2; bar_wert[4]=maxy/7*2; bar_wert[5]=maxy/11*2; bar_wert[6]=maxy/7; setBackground(Color.black); setForeground(Color.white); /* ausgabetext=getParameter("ausgabe"); PARAMETER auswerten */ } public void start() {} /* Nach Initphase oder back from Icon */ /* noch keine graphic moeglich ! */ public void stop() {} /* bei Icon verkleinerung */ public void destroy(){} /* bei Beenden der Seite */ /***************************************************************/ void funktion() { for (int i = 0 ; i < N; i++) { func[i]=Math.sin(i*2.0*pi/(N-1)*(16.0/(16.0 )) )*(Math.exp(7.0*bar_wert[0]/maxy)-1)+ Math.sin(i*2.0*pi/(N-1)*(16.0/(16.0/3.0)) )*(Math.exp(7.0*bar_wert[1]/maxy)-1)+ Math.sin(i*2.0*pi/(N-1)*(16.0/(8.0 )) )*(Math.exp(7.0*bar_wert[2]/maxy)-1)+ Math.sin(i*2.0*pi/(N-1)*(16.0/(4.0 )) )*(Math.exp(7.0*bar_wert[3]/maxy)-1)+ Math.sin(i*2.0*pi/(N-1)*(16.0/(8.0/3.0 )) )*(Math.exp(7.0*bar_wert[4]/maxy)-1)+ Math.sin(i*2.0*pi/(N-1)*(16.0/(2.0 )) )*(Math.exp(7.0*bar_wert[5]/maxy)-1)+ Math.sin(i*2.0*pi/(N-1)*(16.0/(8.0/5.0 )) )*(Math.exp(7.0*bar_wert[6]/maxy)-1)+ Math.sin(i*2.0*pi/(N-1)*(16.0/(4.0/3.0 )) )*(Math.exp(7.0*bar_wert[7]/maxy)-1)+ Math.sin(i*2.0*pi/(N-1)*(16.0/(1.0 )) )*(Math.exp(7.0*bar_wert[8]/maxy)-1); } } /***************************************************************/ void normplot(Graphics g) { int i; double amp; double min; double max; double x,xx,y,yy; /*String text;*/ g.setColor(Color.red); g.draw3DRect(0,0, maxx,maxy-10,true); g.draw3DRect(1,1,2*maxx-5,maxy-10,true); g.setColor(Color.white); g.drawString("HAMMOND-Viewer by T. Richardon", 25, 20); g.drawString("Change Drawbars with mouse", maxx*5/4,maxy*4/5); funktion(); max=func[0]; min=func[0]; for(i=0; imax) max=func[i]; } amp=(Math.abs(max)+Math.abs(min))*1.0; /*text=String.valueOf(max);*/ /*g.drawString(text,25,40);*/ if (amp==0) amp=1e-99; for (i=0; ibxa)&&(xmaxy/2) y=maxy/2; bar_wert[bar_nr]=y; /* Drawbar wert aktualisieren */ funktion(); bars(); /* Bars neu zeichnen */ repaint(); return true; } /***************************************************************/ /* action wird automatisch aufgerufen, falls ein Ereignis */ /* aufgetreten ist. */ /* Event evt ist das konkrete Ereignis der Aktion */ /* Objekt arg ist das Objekt,das Ereignis ausgeloest hat */ public boolean action(Event evt, Object arg) { int i; if (evt.target instanceof Button) /* Gehoert Ereignis zu Button ?*/ { String Knopf = arg.toString(); /* arg als String in Knopf speichern */ if (Knopf=="reset") { for(i=0; i<9; i++) bar_wert[i]=0; funktion(); bars(); repaint(); } } return false; } /***************************************************************/ /* paint wird automatisch zyklisch aufgerufen */ /***************************************************************/ public void paint(Graphics g) { funktion(); normplot(g); bars(); } }/* end of class */