// This is the thing that makes the big plots on the left side.

import java.awt.*;

public class PlotPanel extends Panel {
  public DiamCalculator dc; public double mu, rho, g, rho_p, u;
  private double oRe=0;
  private Plot fRePlot; // , dRhoPlot;

public void init() {
  setLayout(new BorderLayout());

  fRePlot=new Plot(); add("Center",fRePlot); fRePlot.init();
  fRePlot.setTitle("Friction Factor Graph"); fRePlot.setGrid(true);
  fRePlot.setNumSets(2); fRePlot.setMarksStyle("none");
  fRePlot.setXLabel("Reynolds Number"); fRePlot.setYLabel("Friction Factor");
  fRePlot.setXLog(true);                fRePlot.setYLog(true);

  fRePlot.addPoint(0,.2,120,false);   fRePlot.addPoint(0,.5,50,true);
  fRePlot.addPoint(0,1,26,true);      fRePlot.addPoint(0,2,14,true);
  fRePlot.addPoint(0,5,7.1,true);     fRePlot.addPoint(0,10,4.3,true);
  fRePlot.addPoint(0,20,2.5,true);    fRePlot.addPoint(0,50,1.5,true);
  fRePlot.addPoint(0,100,1.05,true);  fRePlot.addPoint(0,200,.8,true);
  fRePlot.addPoint(0,500,.56,true);   fRePlot.addPoint(0,1000,.45,true);
  fRePlot.addPoint(0,2000,.42,true);  fRePlot.addPoint(0,5000,.4,true);
  fRePlot.addPoint(0,10000,.42,true); fRePlot.addPoint(0,20000,.46,true);
  fRePlot.addPoint(0,50000,.49,true); fRePlot.addPoint(0,100000,.5,true); }

public PlotPanel(double imu, double irho, double ig, double irp, double iu) {
  mu=imu; rho=irho; g=ig; rho_p=irp; u=iu; dc=new DiamCalculator(mu,rho,g); }

public void drawLines() {
  if(oRe>0) {
    for(int i=0; i<5; i++) fRePlot.erasePoint(1,0); }
  double orat=dc.free(rho_p,u);
  if(orat>=5e-6&&orat<600) {
    oRe=dc.rerat(orat);
    fRePlot.addPoint(1,oRe,.3,false);
    fRePlot.addPoint(1,oRe,oRe*orat,true);
    fRePlot.addPoint(1,.2,oRe*orat,true);
    fRePlot.addPoint(1,oRe,oRe*orat,false);
    if(orat>1.5) fRePlot.addPoint(1,.2,.2*orat,true);
    else fRePlot.addPoint(1,.3/orat,.3,true); }
  else { oRe=0; if(orat<5e-6) {
    throw new Error("Reynolds number too large."); }}
  
  fRePlot.fillPlot(); }

public void paint(Graphics g) { fRePlot.paint(g); }}
