//Polarization_State.java
import java.awt.Dimension;
import java.awt.Toolkit;
import java.util.*;

public class Polarization_State {
    public double ampA, ampB, phaseA, phaseB; //Old State
    public double ampAA, ampBB, phaseAA, phaseBB; //New State
    public double wt, dwt;
    public boolean isTracerOn;
    public int NSteps;
    public boolean RESET;
    public int SleepTime  = 35;
    public boolean LicenseExpired;
    public boolean IsWindows = false;
    
    public int this_month, today_week, this_year, this_hour, this_minute, today_month, 
	       today_year,this_zone, saving_time;       
    GregorianCalendar Greg = new GregorianCalendar();
    
    //THIS IS THE PARAMETER FOR ZOOM ===========================================
    public static int base_width = 631;
    public static int base_height = 460;
    public double Xfactor = 0.80;
    
    //public double sfactor = 1.25;
    Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
    public int screenHeight = screenSize.height;
    public int screenWidth = screenSize.width;
    public int sfactor1 = screenSize.height;
    public int sfactor2 = screenSize.width;
    
    //public int screenHeight = 768;
    //public int screenWidth = 1360;
    //public int sfactor1 = 768;
    //public int sfactor2 = 1360;
    
    //public int screenHeight = 800;
    //public int screenWidth = 1280;
    //public int sfactor1 = 800;
    //public int sfactor2 = 1280;
    
    //public int screenHeight = 720;
    //public int screenWidth = 1280;
    //public int sfactor1 = 720;
    //public int sfactor2 = 1280;
    //==========================================================================
    
    public double sfactor3 = Math.min(sfactor1, sfactor2);
    public double sfactor = MaestroA.rounder(Xfactor*(double)(sfactor3/base_height),2);
    
    public int ss2 = (int)Math.ceil(2*sfactor);
    public int s1 = (int)Math.ceil(1*sfactor);
    public int s2 = (int)Math.ceil(2*sfactor);
    public int s3 = (int)Math.ceil(3*sfactor);
    public int s4 = (int)Math.ceil(4*sfactor);
    public int s5 = (int)Math.ceil(5*sfactor);
    public int s6 = (int)Math.ceil(6*sfactor);
    public int s7 = (int)Math.ceil(7*sfactor);
    public int s8 = (int)Math.ceil(8*sfactor);
    public int s9 = (int)Math.ceil(9*sfactor);
    public int s10 = (int)Math.ceil(10*sfactor);
    public int s11 = (int)Math.ceil(11*sfactor);
    public int s12 = (int)Math.ceil(12*sfactor);
    public int s13 = (int)Math.ceil(13*sfactor);
    public int s14 = (int)Math.ceil(14*sfactor);
    public int s15 = (int)Math.ceil(15*sfactor);
    public int s16 = (int)Math.ceil(16*sfactor);
    public int s17 = (int)Math.ceil(17*sfactor);
    public int s18 = (int)Math.ceil(18*sfactor);
    public int s19 = (int)Math.ceil(19*sfactor);
    public int s20 = (int)Math.ceil(20*sfactor);
    public int s21 = (int)Math.ceil(21*sfactor);
    public int s22 = (int)Math.ceil(22*sfactor);
    public int s23 = (int)Math.ceil(23*sfactor);
    public int s24 = (int)Math.ceil(24*sfactor);
    public int s25 = (int)Math.ceil(25*sfactor);
    public int s26 = (int)Math.ceil(26*sfactor);
    public int s27 = (int)Math.ceil(27*sfactor);
    public int s28 = (int)Math.ceil(28*sfactor);
    public int s29 = (int)Math.ceil(29*sfactor);
    public int s30 = (int)Math.ceil(30*sfactor);
    public int s31 = (int)Math.ceil(31*sfactor);
    public int s32 = (int)Math.ceil(32*sfactor);
    public int s33 = (int)Math.ceil(33*sfactor);
    public int s34 = (int)Math.ceil(34*sfactor);
    public int s35 = (int)Math.ceil(35*sfactor);
    public int s36 = (int)Math.ceil(36*sfactor);
    public int s37 = (int)Math.ceil(37*sfactor);
    public int s38 = (int)Math.ceil(38*sfactor);
    public int s39 = (int)Math.ceil(39*sfactor);
    public int s40 = (int)Math.ceil(40*sfactor);
    public int s41 = (int)Math.ceil(41*sfactor);
    public int s42 = (int)Math.ceil(42*sfactor);
    public int s43 = (int)Math.ceil(43*sfactor);
    public int s44 = (int)Math.ceil(44*sfactor);
    public int s45 = (int)Math.ceil(45*sfactor);
    public int s46 = (int)Math.ceil(46*sfactor);
    public int s47 = (int)Math.ceil(47*sfactor);
    public int s48 = (int)Math.ceil(48*sfactor);
    public int s49 = (int)Math.ceil(49*sfactor);
    public int s50 = (int)Math.ceil(50*sfactor);
    public int s51 = (int)Math.ceil(51*sfactor);
    public int s52 = (int)Math.ceil(52*sfactor);
    public int s53 = (int)Math.ceil(53*sfactor);
    public int s54 = (int)Math.ceil(54*sfactor);
    public int s55 = (int)Math.ceil(55*sfactor);
    public int s56 = (int)Math.ceil(56*sfactor);
    public int s57 = (int)Math.ceil(57*sfactor);
    public int s58 = (int)Math.ceil(58*sfactor);
    public int s59 = (int)Math.ceil(59*sfactor);
    public int s60 = (int)Math.ceil(60*sfactor);
    public int s61 = (int)Math.ceil(61*sfactor);
    public int s62 = (int)Math.ceil(62*sfactor);
    public int s63 = (int)Math.ceil(63*sfactor);
    public int s64 = (int)Math.ceil(64*sfactor);
    public int s65 = (int)Math.ceil(65*sfactor);
    public int s66 = (int)Math.ceil(66*sfactor);
    public int s67 = (int)Math.ceil(67*sfactor);
    public int s68 = (int)Math.ceil(68*sfactor);
    public int s69 = (int)Math.ceil(69*sfactor);
    public int s70 = (int)Math.ceil(70*sfactor);
    public int s71 = (int)Math.ceil(71*sfactor);
    public int s72 = (int)Math.ceil(72*sfactor);
    public int s73 = (int)Math.ceil(73*sfactor);
    public int s74 = (int)Math.ceil(74*sfactor);
    public int s75 = (int)Math.ceil(75*sfactor);
    public int s76 = (int)Math.ceil(76*sfactor);
    public int s77 = (int)Math.ceil(77*sfactor);
    public int s78 = (int)Math.ceil(78*sfactor);
    public int s79 = (int)Math.ceil(79*sfactor);
    public int s80 = (int)Math.ceil(80*sfactor);
    public int s81 = (int)Math.ceil(81*sfactor);
    public int s82 = (int)Math.ceil(82*sfactor);
    public int s83 = (int)Math.ceil(83*sfactor);
    public int s84 = (int)Math.ceil(84*sfactor);
    public int s85 = (int)Math.ceil(85*sfactor);
    public int s86 = (int)Math.ceil(86*sfactor);
    public int s87 = (int)Math.ceil(87*sfactor);
    public int s88 = (int)Math.ceil(88*sfactor);
    public int s89 = (int)Math.ceil(89*sfactor);
    public int s90 = (int)Math.ceil(90*sfactor);
    public int s91 = (int)Math.ceil(91*sfactor);
    public int s92 = (int)Math.ceil(92*sfactor);
    public int s93 = (int)Math.ceil(93*sfactor);
    public int s94 = (int)Math.ceil(94*sfactor);
    public int s95 = (int)Math.ceil(95*sfactor);
    public int s96 = (int)Math.ceil(96*sfactor);
    public int s97 = (int)Math.ceil(97*sfactor);
    public int s98 = (int)Math.ceil(98*sfactor);
    public int s99 = (int)Math.ceil(99*sfactor);
    public int s100 = (int)Math.ceil(100*sfactor);
    public int s101 = (int)Math.ceil(101*sfactor);
    public int s102 = (int)Math.ceil(102*sfactor);
    public int s103 = (int)Math.ceil(103*sfactor);
    public int s104 = (int)Math.ceil(104*sfactor);
    public int s105 = (int)Math.ceil(105*sfactor);
    public int s106 = (int)Math.ceil(106*sfactor);
    public int s107 = (int)Math.ceil(107*sfactor);
    public int s108 = (int)Math.ceil(108*sfactor);
    public int s109 = (int)Math.ceil(109*sfactor);
    public int s110 = (int)Math.ceil(110*sfactor);
    public int s111 = (int)Math.ceil(111*sfactor);
    public int s112 = (int)Math.ceil(112*sfactor);
    public int s113 = (int)Math.ceil(113*sfactor);
    public int s114 = (int)Math.ceil(114*sfactor);
    public int s115 = (int)Math.ceil(115*sfactor);
    public int s116 = (int)Math.ceil(116*sfactor);
    public int s117 = (int)Math.ceil(117*sfactor);
    public int s118 = (int)Math.ceil(118*sfactor);
    public int s119 = (int)Math.ceil(119*sfactor);
    public int s120 = (int)Math.ceil(120*sfactor);
    public int s121 = (int)Math.ceil(121*sfactor);
    public int s122 = (int)Math.ceil(122*sfactor);
    public int s123 = (int)Math.ceil(123*sfactor);
    public int s124 = (int)Math.ceil(124*sfactor);
    public int s125 = (int)Math.ceil(125*sfactor);
    public int s126 = (int)Math.ceil(126*sfactor);
    public int s127 = (int)Math.ceil(127*sfactor);
    public int s128 = (int)Math.ceil(128*sfactor);
    public int s129 = (int)Math.ceil(129*sfactor);
    public int s130 = (int)Math.ceil(130*sfactor);
    public int s131 = (int)Math.ceil(131*sfactor);
    public int s132 = (int)Math.ceil(132*sfactor);
    public int s133 = (int)Math.ceil(133*sfactor);
    public int s134 = (int)Math.ceil(134*sfactor);
    public int s135 = (int)Math.ceil(135*sfactor);
    public int s136 = (int)Math.ceil(136*sfactor);
    public int s137 = (int)Math.ceil(137*sfactor);
    public int s138 = (int)Math.ceil(138*sfactor);
    public int s139 = (int)Math.ceil(139*sfactor);
    public int s140 = (int)Math.ceil(140*sfactor);
    public int s141 = (int)Math.ceil(141*sfactor);
    public int s142 = (int)Math.ceil(142*sfactor);
    public int s143 = (int)Math.ceil(143*sfactor);
    public int s144 = (int)Math.ceil(144*sfactor);
    public int s145 = (int)Math.ceil(145*sfactor);
    public int s146 = (int)Math.ceil(146*sfactor);
    public int s147 = (int)Math.ceil(147*sfactor);
    public int s148 = (int)Math.ceil(148*sfactor);
    public int s149 = (int)Math.ceil(149*sfactor);
    public int s150 = (int)Math.ceil(150*sfactor);
    public int s151 = (int)Math.ceil(151*sfactor);
    public int s152 = (int)Math.ceil(152*sfactor);
    public int s153 = (int)Math.ceil(153*sfactor);
    public int s154 = (int)Math.ceil(154*sfactor);
    public int s155 = (int)Math.ceil(155*sfactor);
    public int s156 = (int)Math.ceil(156*sfactor);
    public int s157 = (int)Math.ceil(157*sfactor);
    public int s158 = (int)Math.ceil(158*sfactor);
    public int s159 = (int)Math.ceil(159*sfactor);
    public int s160 = (int)Math.ceil(160*sfactor);
    public int s161 = (int)Math.ceil(161*sfactor);
    public int s162 = (int)Math.ceil(162*sfactor);
    public int s163 = (int)Math.ceil(163*sfactor);
    public int s164 = (int)Math.ceil(164*sfactor);
    public int s165 = (int)Math.ceil(165*sfactor);
    public int s166 = (int)Math.ceil(166*sfactor);
    public int s167 = (int)Math.ceil(167*sfactor);
    public int s168 = (int)Math.ceil(168*sfactor);
    public int s169 = (int)Math.ceil(169*sfactor);
    public int s170 = (int)Math.ceil(170*sfactor);
    public int s171 = (int)Math.ceil(171*sfactor);
    public int s172 = (int)Math.ceil(172*sfactor);
    public int s173 = (int)Math.ceil(173*sfactor);
    public int s174 = (int)Math.ceil(174*sfactor);
    public int s175 = (int)Math.ceil(175*sfactor);
    public int s176 = (int)Math.ceil(176*sfactor);
    public int s177 = (int)Math.ceil(177*sfactor);
    public int s178 = (int)Math.ceil(178*sfactor);
    public int s179 = (int)Math.ceil(179*sfactor);
    public int s180 = (int)Math.ceil(180*sfactor);
    public int s181 = (int)Math.ceil(181*sfactor);
    public int s182 = (int)Math.ceil(182*sfactor);
    public int s183 = (int)Math.ceil(183*sfactor);
    public int s184 = (int)Math.ceil(184*sfactor);
    public int s185 = (int)Math.ceil(185*sfactor);
    public int s186 = (int)Math.ceil(186*sfactor);
    public int s187 = (int)Math.ceil(187*sfactor);
    public int s188 = (int)Math.ceil(188*sfactor);
    public int s189 = (int)Math.ceil(189*sfactor);
    public int s190 = (int)Math.ceil(190*sfactor);
    public int s191 = (int)Math.ceil(191*sfactor);
    public int s192 = (int)Math.ceil(192*sfactor);
    public int s193 = (int)Math.ceil(193*sfactor);
    public int s194 = (int)Math.ceil(194*sfactor);
    public int s195 = (int)Math.ceil(195*sfactor);
    public int s196 = (int)Math.ceil(196*sfactor);
    public int s197 = (int)Math.ceil(197*sfactor);
    public int s198 = (int)Math.ceil(198*sfactor);
    public int s199 = (int)Math.ceil(199*sfactor);
    public int s200 = (int)Math.ceil(200*sfactor);
    public int s250 = (int)Math.ceil(250*sfactor);
    public int s300 = (int)Math.ceil(300*sfactor);
    public int s350 = (int)Math.ceil(350*sfactor);
    public int s400 = (int)Math.ceil(400*sfactor);
    public int s450 = (int)Math.ceil(450*sfactor);
    public int s500 = (int)Math.ceil(500*sfactor);
    public int s550 = (int)Math.ceil(550*sfactor);
    public int s600 = (int)Math.ceil(600*sfactor);
    public int s700 = (int)Math.ceil(700*sfactor);
    public int s800 = (int)Math.ceil(800*sfactor);
    public int s900 = (int)Math.ceil(900*sfactor);
    public int s1000 = (int)Math.ceil(1000*sfactor);

    //------------------------------------------------------------------------------ 
    // Look-up table for automatic adjustment of fonts
    //------------------------------------------------------------------------------
    public int font8 = (int)Math.floor(8*sfactor);
    public int font9 = (int)Math.floor(9*sfactor);
    public int font10 = (int)Math.floor(10*sfactor);
    public int font11 = (int)Math.floor(11*sfactor);
    public int font12 = (int)Math.floor(12*sfactor);
    public int font13 = (int)Math.floor(13*sfactor);
    public int font14 = (int)Math.floor(14*sfactor);
    public int font15 = (int)Math.floor(15*sfactor);
    public int font16 = (int)Math.floor(16*sfactor);
    public int font17 = (int)Math.floor(17*sfactor);
    public int font18 = (int)Math.floor(18*sfactor);
    public int font19 = (int)Math.floor(19*sfactor);
    public int font20 = (int)Math.floor(20*sfactor);
    public int font21 = (int)Math.floor(21*sfactor);
    public int font22 = (int)Math.floor(22*sfactor);
    public int font23 = (int)Math.floor(23*sfactor);
    public int font24 = (int)Math.floor(24*sfactor);
    public int font25 = (int)Math.floor(25*sfactor);
    public int font26 = (int)Math.floor(26*sfactor);
    public int font27 = (int)Math.floor(27*sfactor);
    public int font28 = (int)Math.floor(28*sfactor);
    public int font29 = (int)Math.floor(29*sfactor);
    public int font30 = (int)Math.floor(30*sfactor);
    public int font31 = (int)Math.floor(31*sfactor);
    public int font32 = (int)Math.floor(32*sfactor);
    public int font33 = (int)Math.floor(33*sfactor);
    public int font34 = (int)Math.floor(34*sfactor);
    public int font35 = (int)Math.floor(35*sfactor);
    public int font36 = (int)Math.floor(36*sfactor);
    public int font37 = (int)Math.floor(37*sfactor);
    public int font38 = (int)Math.floor(38*sfactor);
    public int font39 = (int)Math.floor(39*sfactor);
    public int font40 = (int)Math.floor(40*sfactor);
    //==========================================================================

    public Polarization_State(){
	NSteps = 180;
	ampA = 1.0;
	ampB = 1.0;
	phaseA = 0.0;
	phaseB = 0.0;
	push();
	
	wt = 0.0;
	dwt = Math.PI*2/(NSteps);
	isTracerOn = false;
	RESET = false;
	
	this_month = Greg.get(Calendar.MONTH);
	//System.out.println("  This is the month = "+this_month);
	today_week = Greg.get(Calendar.DAY_OF_WEEK);
	//System.out.println("  This is the day_week = "+today_week);
	this_year = Greg.get(Calendar.YEAR);
	this_hour = Greg.get(Calendar.HOUR_OF_DAY);
	//System.out.println("  This is the year = "+this_year);
	this_minute = Greg.get(Calendar.MINUTE);
	//System.out.println("  This is the minute = "+this_minute);
	today_month = Greg.get(Calendar.DAY_OF_MONTH);
	//System.out.println("  This is the day_month = "+today_month);
	today_year = Greg.get(Calendar.DAY_OF_YEAR);
	//System.out.println("  This is the day_year = "+today_year);
	this_zone = Greg.get(Calendar.ZONE_OFFSET);
	//System.out.println("  This is the zone_offset = "+this_zone/3600000);
	saving_time = Greg.get(Calendar.DST_OFFSET);
	//System.out.println("  This is the dst_offset = "+saving_time/3600000);
	
    }
    
    public void refresh_size(){
    if(sfactor < 1.3){
        ss2 = (int)Math.floor(2*sfactor);
    }
    else{
        ss2 = (int)Math.ceil(2*sfactor);
    }
    //----------------------------------------------------------------------
    s1 = (int)Math.ceil(1*sfactor);
    s2 = (int)Math.ceil(2*sfactor);
    s3 = (int)Math.ceil(3*sfactor);
    s4 = (int)Math.ceil(4*sfactor);
    s5 = (int)Math.ceil(5*sfactor);
    s6 = (int)Math.ceil(6*sfactor);
    s7 = (int)Math.ceil(7*sfactor);
    s8 = (int)Math.ceil(8*sfactor);
    s9 = (int)Math.ceil(9*sfactor);
    s10 = (int)Math.ceil(10*sfactor);
    s11 = (int)Math.ceil(11*sfactor);
    s12 = (int)Math.ceil(12*sfactor);
    s13 = (int)Math.ceil(13*sfactor);
    s14 = (int)Math.ceil(14*sfactor);
    s15 = (int)Math.ceil(15*sfactor);
    s16 = (int)Math.ceil(16*sfactor);
    s17 = (int)Math.ceil(17*sfactor);
    s18 = (int)Math.ceil(18*sfactor);
    s19 = (int)Math.ceil(19*sfactor);
    s20 = (int)Math.ceil(20*sfactor);
    s21 = (int)Math.ceil(21*sfactor);
    s22 = (int)Math.ceil(22*sfactor);
    s23 = (int)Math.ceil(23*sfactor);
    s24 = (int)Math.ceil(24*sfactor);
    s25 = (int)Math.ceil(25*sfactor);
    s26 = (int)Math.ceil(26*sfactor);
    s27 = (int)Math.ceil(27*sfactor);
    s28 = (int)Math.ceil(28*sfactor);
    s29 = (int)Math.ceil(29*sfactor);
    s30 = (int)Math.ceil(30*sfactor);
    s31 = (int)Math.ceil(31*sfactor);
    s32 = (int)Math.ceil(32*sfactor);
    s33 = (int)Math.ceil(33*sfactor);
    s34 = (int)Math.ceil(34*sfactor);
    s35 = (int)Math.ceil(35*sfactor);
    s36 = (int)Math.ceil(36*sfactor);
    s37 = (int)Math.ceil(37*sfactor);
    s38 = (int)Math.ceil(38*sfactor);
    s39 = (int)Math.ceil(39*sfactor);
    s40 = (int)Math.ceil(40*sfactor);
    s41 = (int)Math.ceil(41*sfactor);
    s42 = (int)Math.ceil(42*sfactor);
    s43 = (int)Math.ceil(43*sfactor);
    s44 = (int)Math.ceil(44*sfactor);
    s45 = (int)Math.ceil(45*sfactor);
    s46 = (int)Math.ceil(46*sfactor);
    s47 = (int)Math.ceil(47*sfactor);
    s48 = (int)Math.ceil(48*sfactor);
    s49 = (int)Math.ceil(49*sfactor);
    s50 = (int)Math.ceil(50*sfactor);
    s51 = (int)Math.ceil(51*sfactor);
    s52 = (int)Math.ceil(52*sfactor);
    s53 = (int)Math.ceil(53*sfactor);
    s54 = (int)Math.ceil(54*sfactor);
    s55 = (int)Math.ceil(55*sfactor);
    s56 = (int)Math.ceil(56*sfactor);
    s57 = (int)Math.ceil(57*sfactor);
    s58 = (int)Math.ceil(58*sfactor);
    s59 = (int)Math.ceil(59*sfactor);
    s60 = (int)Math.ceil(60*sfactor);
    s61 = (int)Math.ceil(61*sfactor);
    s62 = (int)Math.ceil(62*sfactor);
    s63 = (int)Math.ceil(63*sfactor);
    s64 = (int)Math.ceil(64*sfactor);
    s65 = (int)Math.ceil(65*sfactor);
    s66 = (int)Math.ceil(66*sfactor);
    s67 = (int)Math.ceil(67*sfactor);
    s68 = (int)Math.ceil(68*sfactor);
    s69 = (int)Math.ceil(69*sfactor);
    s70 = (int)Math.ceil(70*sfactor);
    s71 = (int)Math.ceil(71*sfactor);
    s72 = (int)Math.ceil(72*sfactor);
    s73 = (int)Math.ceil(73*sfactor);
    s74 = (int)Math.ceil(74*sfactor);
    s75 = (int)Math.ceil(75*sfactor);
    s76 = (int)Math.ceil(76*sfactor);
    s77 = (int)Math.ceil(77*sfactor);
    s78 = (int)Math.ceil(78*sfactor);
    s79 = (int)Math.ceil(79*sfactor);
    s80 = (int)Math.ceil(80*sfactor);
    s81 = (int)Math.ceil(81*sfactor);
    s82 = (int)Math.ceil(82*sfactor);
    s83 = (int)Math.ceil(83*sfactor);
    s84 = (int)Math.ceil(84*sfactor);
    s85 = (int)Math.ceil(85*sfactor);
    s86 = (int)Math.ceil(86*sfactor);
    s87 = (int)Math.ceil(87*sfactor);
    s88 = (int)Math.ceil(88*sfactor);
    s89 = (int)Math.ceil(89*sfactor);
    s90 = (int)Math.ceil(90*sfactor);
    s91 = (int)Math.ceil(91*sfactor);
    s92 = (int)Math.ceil(92*sfactor);
    s93 = (int)Math.ceil(93*sfactor);
    s94 = (int)Math.ceil(94*sfactor);
    s95 = (int)Math.ceil(95*sfactor);
    s96 = (int)Math.ceil(96*sfactor);
    s97 = (int)Math.ceil(97*sfactor);
    s98 = (int)Math.ceil(98*sfactor);
    s99 = (int)Math.ceil(99*sfactor);
    s100 = (int)Math.ceil(100*sfactor);
    s101 = (int)Math.ceil(101*sfactor);
    s102 = (int)Math.ceil(102*sfactor);
    s103 = (int)Math.ceil(103*sfactor);
    s104 = (int)Math.ceil(104*sfactor);
    s105 = (int)Math.ceil(105*sfactor);
    s106 = (int)Math.ceil(106*sfactor);
    s107 = (int)Math.ceil(107*sfactor);
    s108 = (int)Math.ceil(108*sfactor);
    s109 = (int)Math.ceil(109*sfactor);
    s110 = (int)Math.ceil(110*sfactor);
    s111 = (int)Math.ceil(111*sfactor);
    s112 = (int)Math.ceil(112*sfactor);
    s113 = (int)Math.ceil(113*sfactor);
    s114 = (int)Math.ceil(114*sfactor);
    s115 = (int)Math.ceil(115*sfactor);
    s116 = (int)Math.ceil(116*sfactor);
    s117 = (int)Math.ceil(117*sfactor);
    s118 = (int)Math.ceil(118*sfactor);
    s119 = (int)Math.ceil(119*sfactor);
    s120 = (int)Math.ceil(120*sfactor);
    s121 = (int)Math.ceil(121*sfactor);
    s122 = (int)Math.ceil(122*sfactor);
    s123 = (int)Math.ceil(123*sfactor);
    s124 = (int)Math.ceil(124*sfactor);
    s125 = (int)Math.ceil(125*sfactor);
    s126 = (int)Math.ceil(126*sfactor);
    s127 = (int)Math.ceil(127*sfactor);
    s128 = (int)Math.ceil(128*sfactor);
    s129 = (int)Math.ceil(129*sfactor);
    s130 = (int)Math.ceil(130*sfactor);
    s131 = (int)Math.ceil(131*sfactor);
    s132 = (int)Math.ceil(132*sfactor);
    s133 = (int)Math.ceil(133*sfactor);
    s134 = (int)Math.ceil(134*sfactor);
    s135 = (int)Math.ceil(135*sfactor);
    s136 = (int)Math.ceil(136*sfactor);
    s137 = (int)Math.ceil(137*sfactor);
    s138 = (int)Math.ceil(138*sfactor);
    s139 = (int)Math.ceil(139*sfactor);
    s140 = (int)Math.ceil(140*sfactor);
    s141 = (int)Math.ceil(141*sfactor);
    s142 = (int)Math.ceil(142*sfactor);
    s143 = (int)Math.ceil(143*sfactor);
    s144 = (int)Math.ceil(144*sfactor);
    s145 = (int)Math.ceil(145*sfactor);
    s146 = (int)Math.ceil(146*sfactor);
    s147 = (int)Math.ceil(147*sfactor);
    s148 = (int)Math.ceil(148*sfactor);
    s149 = (int)Math.ceil(149*sfactor);
    s150 = (int)Math.ceil(150*sfactor);
    s151 = (int)Math.ceil(151*sfactor);
    s152 = (int)Math.ceil(152*sfactor);
    s153 = (int)Math.ceil(153*sfactor);
    s154 = (int)Math.ceil(154*sfactor);
    s155 = (int)Math.ceil(155*sfactor);
    s156 = (int)Math.ceil(156*sfactor);
    s157 = (int)Math.ceil(157*sfactor);
    s158 = (int)Math.ceil(158*sfactor);
    s159 = (int)Math.ceil(159*sfactor);
    s160 = (int)Math.ceil(160*sfactor);
    s161 = (int)Math.ceil(161*sfactor);
    s162 = (int)Math.ceil(162*sfactor);
    s163 = (int)Math.ceil(163*sfactor);
    s164 = (int)Math.ceil(164*sfactor);
    s165 = (int)Math.ceil(165*sfactor);
    s166 = (int)Math.ceil(166*sfactor);
    s167 = (int)Math.ceil(167*sfactor);
    s168 = (int)Math.ceil(168*sfactor);
    s169 = (int)Math.ceil(169*sfactor);
    s170 = (int)Math.ceil(170*sfactor);
    s171 = (int)Math.ceil(171*sfactor);
    s172 = (int)Math.ceil(172*sfactor);
    s173 = (int)Math.ceil(173*sfactor);
    s174 = (int)Math.ceil(174*sfactor);
    s175 = (int)Math.ceil(175*sfactor);
    s176 = (int)Math.ceil(176*sfactor);
    s177 = (int)Math.ceil(177*sfactor);
    s178 = (int)Math.ceil(178*sfactor);
    s179 = (int)Math.ceil(179*sfactor);
    s180 = (int)Math.ceil(180*sfactor);
    s181 = (int)Math.ceil(181*sfactor);
    s182 = (int)Math.ceil(182*sfactor);
    s183 = (int)Math.ceil(183*sfactor);
    s184 = (int)Math.ceil(184*sfactor);
    s185 = (int)Math.ceil(185*sfactor);
    s186 = (int)Math.ceil(186*sfactor);
    s187 = (int)Math.ceil(187*sfactor);
    s188 = (int)Math.ceil(188*sfactor);
    s189 = (int)Math.ceil(189*sfactor);
    s190 = (int)Math.ceil(190*sfactor);
    s191 = (int)Math.ceil(191*sfactor);
    s192 = (int)Math.ceil(192*sfactor);
    s193 = (int)Math.ceil(193*sfactor);
    s194 = (int)Math.ceil(194*sfactor);
    s195 = (int)Math.ceil(195*sfactor);
    s196 = (int)Math.ceil(196*sfactor);
    s197 = (int)Math.ceil(197*sfactor);
    s198 = (int)Math.ceil(198*sfactor);
    s199 = (int)Math.ceil(199*sfactor);
    s200 = (int)Math.ceil(200*sfactor);
    s250 = (int)Math.ceil(250*sfactor);
    s300 = (int)Math.ceil(300*sfactor);
    s350 = (int)Math.ceil(350*sfactor);
    s400 = (int)Math.ceil(400*sfactor);
    s450 = (int)Math.ceil(450*sfactor);
    s500 = (int)Math.ceil(500*sfactor);
    s550 = (int)Math.ceil(550*sfactor);
    s600 = (int)Math.ceil(600*sfactor);
    s700 = (int)Math.ceil(700*sfactor);
    s800 = (int)Math.ceil(800*sfactor);
    s900 = (int)Math.ceil(900*sfactor);
    s1000 = (int)Math.ceil(1000*sfactor);
    //----------------------------------------------------------------------
    font8 = (int)Math.floor(8*sfactor);
    font9 = (int)Math.floor(9*sfactor);
    font10 = (int)Math.floor(10*sfactor);
    font11 = (int)Math.floor(11*sfactor);
    font12 = (int)Math.floor(12*sfactor);
    font13 = (int)Math.floor(13*sfactor);
    font14 = (int)Math.floor(14*sfactor);
    font15 = (int)Math.floor(15*sfactor);
    font16 = (int)Math.floor(16*sfactor);
    font17 = (int)Math.floor(17*sfactor);
    font18 = (int)Math.floor(18*sfactor);
    font19 = (int)Math.floor(19*sfactor);
    font20 = (int)Math.floor(20*sfactor);
    font21 = (int)Math.floor(21*sfactor);
    font22 = (int)Math.floor(22*sfactor);
    font23 = (int)Math.floor(23*sfactor);
    font24 = (int)Math.floor(24*sfactor);
    font25 = (int)Math.floor(25*sfactor);
    font26 = (int)Math.floor(26*sfactor);
    font27 = (int)Math.floor(27*sfactor);
    font28 = (int)Math.floor(28*sfactor);
    font29 = (int)Math.floor(29*sfactor);
    font30 = (int)Math.floor(30*sfactor);
    font31 = (int)Math.floor(31*sfactor);
    font32 = (int)Math.floor(32*sfactor);
    font33 = (int)Math.floor(33*sfactor);
    font34 = (int)Math.floor(34*sfactor);
    font35 = (int)Math.floor(35*sfactor);
    font36 = (int)Math.floor(36*sfactor);
    font37 = (int)Math.floor(37*sfactor);
    font38 = (int)Math.floor(38*sfactor);
    font39 = (int)Math.floor(39*sfactor);
    font40 = (int)Math.floor(40*sfactor);
}
    
    public double getMagnitude(int tmp){
        String lcOSName = System.getProperty("os.name").toLowerCase();
        boolean MAC_OS_X = lcOSName.startsWith("mac os x");
        boolean WINDOWS = lcOSName.startsWith("windows");
        if(WINDOWS){
            IsWindows = true;
        }
        else{
            IsWindows = false;
        }
        //System.out.println(lcOSName);
        
	double dtmp = 0.0;
	if(tmp == 1){
	    dtmp = Math.sqrt(Math.pow(ampA*Math.cos(phaseA+wt),2.0)+
			     Math.pow(ampB*Math.cos(phaseB+wt),2.0));
	}
	else if(tmp == 2){
	    dtmp = Math.sqrt(Math.pow(ampAA*Math.cos(phaseAA+wt),2.0)+
			     Math.pow(ampBB*Math.cos(phaseBB+wt),2.0));
	}
	else {
	    dtmp = 0.0;
	}
	return dtmp;
    }
    
    public synchronized void increment(){
	wt+=dwt;
	if(wt > Math.PI * 2){
		wt -= 2 * Math.PI;
	}
    }
    
    public synchronized void push(){
	ampAA = ampA;
	ampBB = ampB;
	phaseAA = phaseA;
	phaseBB = phaseB;
    }
    
 
    
    public String getInfo(){
		String tmp;
		double difphase, difamp;
		double tol=1.0E-5;
		difphase=phaseB-phaseA;
		difamp=ampA-ampB;
		
		// Linear Polarization
		  if (difphase == 0.0 || Math.abs(difphase) == Math.PI 
			|| Math.abs(difphase) == 2.0*Math.PI 
			|| ampA ==0.0 || ampB ==0 ){
		    tmp = "The polarization is LINEAR";
		}
		
		// Circular Polarization
		else if (Math.abs(difamp) < tol && 
			 (Math.abs(Math.abs(difphase)-Math.PI/2.0)< tol
			  || Math.abs(Math.abs(difphase)-1.5*Math.PI) < tol))			
		{
		   if(difphase == -Math.PI/2.0 || difphase == 1.5*Math.PI){
                      tmp = "The polarization is CIRCULAR ( right-handed )";
		   }
		   else{
	              tmp = "The polarization is CIRCULAR ( left-handed )";
		   }
		}
		else{
		   if((difphase<0.0 && difphase > -Math.PI) 
			|| (difphase < 2.0*Math.PI && difphase > Math.PI))
		   {
                      tmp = "The polarization is ELLIPTICAL ( right-handed )";
		   }
		   else{
	              tmp = "The polarization is ELLIPTICAL ( left-handed )";
		   }
		   
		}
	    return tmp;
	}
	
	public synchronized void reset(){
	    RESET = true;
	    wt = 0.0;
	}
	
	public synchronized void preset(){
	    RESET = false;
	}
}