//Mod1State.java
/*
 * State routine - calculate/update numerical values for microstrip
 * authors: Umberto Ravaioli, Janice Richards
 * version 1.0 - Copyright: Amanogawa.com - All Rights Reserved
 */

import java.util.*;
import java.awt.Point;
import java.awt.Color;
import java.awt.Font;

public class Mod1State {

    //public static final int placeNegativeCharge = 1;    
    public static final int placeCharge = 2;    
    public static final int changeChargeValue = 3;
    public static final int removeCharge = 4;    
    public static final int moveCharge = 5;    
    public static final int showBFieldAtCursor = 6;    
    public int currentAction;

    public Point highlightedPoint;

    public double chargeToAdd = 5.0;
    public static final double chargeMin = -5.0;
    public static final double chargeMax = 5.0;
    //public static final double elementaryCharge = 1.6E-19; // in nCoulombs
    public static final double elementaryCharge = 1; // in amps
    public static final double epsilon = 8.85E-12;

  // Maximum voltage is 103.16 (or actually > 106, with the additive charges)
  //  after all calculations;
  // below value is actually the CHARGE max (5*elementaryCharge)
  public double vmax; // for 5 elem charges at 1 grid diff

  // Round the 103 or 106 down to a nice even number:
    public static final double potentialMax = 100.0;
    public static final double bfieldMax = 21;  // ???????
    public double bfieldAtCursor = 0.0;   // intialized
    public double bfieldThetaAtCursor = 0.0;   // intialized

    // represents points on large field to plot on small lower right plots
    public Point moveFromPoint = new Point(-1,-1);   // intialized
    public Point moveToPoint = new Point(-1,-1);   // intialized


  public static Color bgColor = new Color(194,235,255);
  //public static Color axisColor = Color.black;
  public static Color axisColor = Color.white;
    public static Color lineColor = Color.orange;

    public Font ttfFont, sanSerifFont, serifFont, symbolFont, italicFont;

    //public static Font boldFont = new Font("Serif",Font.BOLD, 18);
    
    public boolean LicenseExpired;
    public int this_month, today_week, this_year, this_hour, this_minute, 
        today_month, today_year, this_zone, saving_time;
    GregorianCalendar Greg = new GregorianCalendar();

    public double lookup[];

    
    public Mod1State(){
      vmax = chargeMax*elementaryCharge;
      currentAction = placeCharge;

      lookup = new double[(int)(potentialMax*10+1)];  //1001  0 - 1000
      lookup[0] = 0;
      double minNumber = Math.log(10);
      double maxNumber = Math.log(lookup.length+10) - minNumber;
      for (int i=1; i<lookup.length; i++) {
          lookup[i] = (Math.log(i+10)-minNumber)/maxNumber;
      }
    }
}


