import java.awt.*; import graph.*; import com.imsl.math.*; public class SLDPlot extends Frame { private G2Dint graph; private DataSet sldRealData, sldImagData; private Axis xaxis, yaxis; private ReflectivityModel model; public SLDPlot() { Font font = new Font("TimesRoman",Font.PLAIN,12); graph = new G2Dint(); graph.drawzero = false; graph.drawgrid = true; graph.gridcolor = Color.gray; graph.borderTop = 20; graph.borderRight = 50; graph.setDataBackground(Color.white); graph.setBackground(Color.white); xaxis = graph.createXAxis(); xaxis.setTitleText("depth (A)"); xaxis.setTitleFont(new Font("TimesRoman",Font.PLAIN,15)); xaxis.setLabelFont(new Font("Helvetica",Font.PLAIN,12)); yaxis = graph.createYAxis(); yaxis.setTitleText("SLD (A^{-2})"); yaxis.setTitleFont(new Font("TimesRoman",Font.PLAIN,15)); yaxis.setLabelFont(new Font("Helvetica",Font.PLAIN,12)); sldRealData = new DataSet(); sldRealData.linecolor = Color.red; sldImagData = new DataSet(); sldImagData.linecolor = Color.blue; xaxis.attachDataSet(sldRealData); yaxis.attachDataSet(sldRealData); graph.attachDataSet(sldRealData); xaxis.attachDataSet(sldImagData); yaxis.attachDataSet(sldImagData); graph.attachDataSet(sldImagData); setLayout( new BorderLayout() ); setBackground(Color.white); super.setTitle("Current SLD Profile"); this.resize(400,300); add("Center",graph); show(false); } public SLDPlot(ReflectivityModel inModel) { this(); model = inModel; } public void setModel(ReflectivityModel inModel) { model = inModel; } public void updatePlot() { double[] deltaZ = model.getDeltaZ(); Complex[] rho = model.getRho(); // numLayers includes fronting and backing media int numLayers = deltaZ.length + 2; int i; double[] realData = new double[4*numLayers]; double[] imagData = new double[4*numLayers]; double z = -100.0; int count = 0; // at i=0 do backing media realData[count] = z; imagData[count] = z; z += 100.0; realData[count+1] = model.getBacking().real(); imagData[count+1] = model.getBacking().imag(); realData[count+2] = z; imagData[count+2] = z; realData[count+3] = model.getBacking().real(); imagData[count+3] = model.getBacking().imag(); count += 4; // for the rest of the stack do like normal for(i=0;i