package rainbowPackage;

//import javafx.scene.paint.Paint.*;
import javafx.scene.paint.Color;

public class RainbowPattern2D //For All Rainbow Patterns To Be Displayed With RainbowSoftColor.java Functions Determining Rainbow/Custom Colors Variation
{//Initializers
	public double[] rgb = {0,0,0}, argb = {0,0,0,1};
	public Color fxColor;
	public Color[] fxColorArray = { fxColor.PINK, fxColor.SKYBLUE };
	public double ColorBeingChecked = 0, OpacityBeingChecked = 1, sliderValue = 0, originalFormulaValue = 0, numberOfTransitions = 0;
	public RainbowSoftColor color = new RainbowSoftColor( new double[]{0,0,0,1} );

	public RainbowPattern2D( Color FXColor )//Creates Class And Sets Color With JavaFX Color Class //
	{
		fxColor = FXColor;
		color = new RainbowSoftColor( FXColor );
		rgb = new double[] { FXColor.getRed() * 255, FXColor.getGreen() * 255, FXColor.getBlue() * 255 };
		argb = new double[] { FXColor.getRed() * 255, FXColor.getGreen() * 255, FXColor.getBlue() * 255, FXColor.getOpacity() };
	}
	public RainbowPattern2D( double[] ARGB )//Creates Class And Sets Color With ARGB //
	{
		for  (int z = 0; z <= 2; z++)
		{
			rgb[z] = ColorValueFitter(ARGB[z]);
			argb[z] = ColorValueFitter(ARGB[z]);
		}
		if ( ARGB.length == 3 )
		{
			argb = new double[4];
			for  (int z = 0; z <= 2; z++)
				argb[z] = ColorValueFitter(rgb[z]);
			ARGB[3] = 1;
		}
		else
			argb[3] = OpacityValueFitter(ARGB[3]);
		color = new RainbowSoftColor( ARGB );
		fxColor = color.ToFXColor();
	}
	public RainbowPattern2D()//Creates Class And Sets Color To Opake Black //
	{
		rgb = new double[]{0,0,0};
		argb = new double[]{0,0,0,1};
		color = new RainbowSoftColor( rgb );
		fxColor = color.ToFXColor();
	}
	public Color ToFXColor ()//Returns Color In JavaFX
	{
		fxColor = color.ToFXColor();
		return fxColor;
	}
	public Color ToFXColor ( double[] ARGB )//Changes Class To ARGB Value And Returns Color In JavaFX //
	{
		for  (int z = 0; z <= 2; z++)
		{
			rgb[z] = ColorValueFitter(ARGB[z]);
			argb[z] = ColorValueFitter(ARGB[z]);
		}
		if ( ARGB.length <= 3 )
			argb[3] = 1;
		else
			argb[3] = OpacityValueFitter(ARGB[3]);
		color = new RainbowSoftColor( argb );
		fxColor = color.ToFXColor();
		return fxColor;
	}

	public Object RainbowSoftColorFunction(double ColorsLength, double LocationOfStillMovement, double LocationOfColorMovement, double MarkerInLength, double RepeatLength, RainbowSoftColor ColorBefore, RainbowSoftColor ColorAfter)//Use This To Access ColorSlider{Location/ColorsLength How Much From ColorBefore To ColorAfter} Though This Function //Top Bar At Top In SimpleDiagnosticsClass.java
	{
		if ( LocationOfStillMovement == 0 )
			sliderValue = SliderFormulateJustMovingColors( ColorsLength, MarkerInLength, LocationOfColorMovement, RepeatLength );
		else
			if ( LocationOfColorMovement == 0)
				sliderValue = SliderFormulateSlidingTransitionsSameColors( ColorsLength, MarkerInLength, LocationOfStillMovement, RepeatLength );
			else
				sliderValue = SliderFormulateDoubleSliding( ColorsLength, MarkerInLength, LocationOfStillMovement, LocationOfColorMovement, RepeatLength );
		for (int z = 0; z <= 2; z++)
		{
			rgb[z] = ColorValueFitter( ( (ColorAfter.rgb[z] - ColorBefore.rgb[z]) * sliderValue/ColorsLength + ColorBefore.rgb[z] ) );
			argb[z] = ColorValueFitter( rgb[z] );
		}
		argb[3] = 1;
		color = new RainbowSoftColor( rgb );
		fxColor = color.ToFXColor();
		return color;
	}

	public Object SimpleRainbow(double ColorsLength, double LocationOfStillMovement, double LocationOfColorMovement, double MarkerInLength, double RepeatLength)//Make Simple Rainbow In The Same Fashion As Above, ColorsLength Length Of Rainbow Respective To Location //Choose ColorsLength To Be Same As RepeatLength For Best Rainbow //
	{
		if ( LocationOfStillMovement == 0 )
			sliderValue = SliderFormulateJustMovingColors( ColorsLength, MarkerInLength, LocationOfColorMovement, RepeatLength );
		else
			if ( LocationOfColorMovement == 0)
				sliderValue = SliderFormulateSlidingTransitionsSameColors( ColorsLength, MarkerInLength, LocationOfStillMovement, RepeatLength );
			else
				sliderValue = SliderFormulateDoubleSliding( ColorsLength, MarkerInLength, LocationOfStillMovement, LocationOfColorMovement, RepeatLength );
		this.color.RainbowSoftColorRainbowFunction(Math.abs( ColorsLength ), sliderValue);//1st Square In SimpleDiagnosticsClass.java
		rgb = color.rgb;
		argb = color.argb;
		fxColor = color.ToFXColor();
		return color;
	}
	public Object SimpleRainbow(double ColorsLength, double LocationOfStillMovement, double LocationOfColorMovement, double MarkerInLength, double RepeatLength, double BrightnessMultiplyer, int Gradations)//Same As Above True And Not Mentioned Anymore BrightnessMultiplier From 0{Black}-1{Same-Color} How Dim, 1-255 How Bright To White. Graduations How Many Different Unadjusted Bars For Each Color //
	{
		if ( LocationOfStillMovement == 0 )
			sliderValue = SliderFormulateJustMovingColors( ColorsLength, MarkerInLength, LocationOfColorMovement, RepeatLength );
		else
			if ( LocationOfColorMovement == 0)
				sliderValue = SliderFormulateSlidingTransitionsSameColors( ColorsLength, MarkerInLength, LocationOfStillMovement, RepeatLength );
			else
				sliderValue = SliderFormulateDoubleSliding( ColorsLength, MarkerInLength, LocationOfStillMovement, LocationOfColorMovement, RepeatLength );
		this.color.RainbowSoftColorRainbowFunctionAdjusted(Math.abs( ColorsLength ), sliderValue, BrightnessMultiplyer, Gradations);//2nd Square In SimpleDiagnosticsClass.java
		rgb = color.rgb;
		argb = color.argb;
		fxColor = color.ToFXColor();
		return color;
	}
	public Object SimpleRainbow(double ColorsLength, double LocationOfStillMovement, double LocationOfColorMovement, double MarkerInLength, double RepeatLength, double BrightnessMultiplyer, int Gradations, boolean Adjusted )//Now Adjusted To Look Better At The Cost Of Speed Gradations Choice //
	{
		if ( LocationOfStillMovement == 0 )
			sliderValue = SliderFormulateJustMovingColors( ColorsLength, MarkerInLength, LocationOfColorMovement, RepeatLength );
		else
			if ( LocationOfColorMovement == 0)
				sliderValue = SliderFormulateSlidingTransitionsSameColors( ColorsLength, MarkerInLength, LocationOfStillMovement, RepeatLength );
			else
				sliderValue = SliderFormulateDoubleSliding( ColorsLength, MarkerInLength, LocationOfStillMovement, LocationOfColorMovement, RepeatLength );
		if ( Adjusted )
			this.color.RainbowSoftColorRainbowFunctionAdjusted(Math.abs( ColorsLength ), sliderValue, BrightnessMultiplyer, Gradations);//3rd Square In SimpleDiagnosticsClass.java
		else
			this.color.RainbowSoftColorRainbowFunctionUnAdjusted(Math.abs( ColorsLength ), sliderValue, BrightnessMultiplyer, Gradations);//4th Square In SimpleDiagnosticsClass.java
		rgb = color.rgb;
		argb = color.argb;
		fxColor = color.ToFXColor();
		return color;
	}
	public Object SimpleRainbowReverse(double ColorsLength, double LocationOfStillMovement, double LocationOfColorMovement, double MarkerInLength, double RepeatLength)//Reverse Color Directions As Rainbow With Green Flipped With Hot Pink //
	{
		if ( LocationOfStillMovement == 0 )
			sliderValue = SliderFormulateJustMovingColors( ColorsLength, MarkerInLength, LocationOfColorMovement, RepeatLength );
		else
			if ( LocationOfColorMovement == 0)
				sliderValue = SliderFormulateSlidingTransitionsSameColors( ColorsLength, MarkerInLength, LocationOfStillMovement, RepeatLength );
			else
				sliderValue = SliderFormulateDoubleSliding( ColorsLength, MarkerInLength, LocationOfStillMovement, LocationOfColorMovement, RepeatLength );
		this.color.RainbowSoftColorRainbowFunctionReverse(Math.abs( ColorsLength ), sliderValue);//5th Square In SimpleDiagnosticsClass.java
		rgb = color.rgb;
		argb = color.argb;
		fxColor = color.ToFXColor();
		return color;
	}
	public Object SimpleRainbowReverse(double ColorsLength, double LocationOfStillMovement, double LocationOfColorMovement, double MarkerInLength, double RepeatLength, double BrightnessMultiplyer, int Gradations )//Same As Above But Reversed //
	{
		if ( LocationOfStillMovement == 0 )
			sliderValue = SliderFormulateJustMovingColors( ColorsLength, MarkerInLength, LocationOfColorMovement, RepeatLength );
		else
			if ( LocationOfColorMovement == 0)
				sliderValue = SliderFormulateSlidingTransitionsSameColors( ColorsLength, MarkerInLength, LocationOfStillMovement, RepeatLength );
			else
				sliderValue = SliderFormulateDoubleSliding( ColorsLength, MarkerInLength, LocationOfStillMovement, LocationOfColorMovement, RepeatLength );
		this.color.RainbowSoftColorRainbowFunctionReverseAdjusted(Math.abs( ColorsLength ), sliderValue, BrightnessMultiplyer, Gradations);//6th Square In SimpleDiagnosticsClass.java
		rgb = color.rgb;
		argb = color.argb;
		fxColor = color.ToFXColor();
		return color;
	}
	public Object SimpleRainbowReverse(double ColorsLength, double LocationOfStillMovement, double LocationOfColorMovement, double MarkerInLength, double RepeatLength, double BrightnessMultiplyer, int Gradations, boolean Adjusted )//Same Adjustment //
	{
		if ( LocationOfStillMovement == 0 )
			sliderValue = SliderFormulateJustMovingColors( ColorsLength, MarkerInLength, LocationOfColorMovement, RepeatLength );
		else
			if ( LocationOfColorMovement == 0)
				sliderValue = SliderFormulateSlidingTransitionsSameColors( ColorsLength, MarkerInLength, LocationOfStillMovement, RepeatLength );
			else
				sliderValue = SliderFormulateDoubleSliding( ColorsLength, MarkerInLength, LocationOfStillMovement, LocationOfColorMovement, RepeatLength );
		if ( Adjusted )
			this.color.RainbowSoftColorRainbowFunctionReverseAdjusted(Math.abs( ColorsLength ), sliderValue, BrightnessMultiplyer, Gradations);//7th Square In SimpleDiagnosticsClass.java
		else
			this.color.RainbowSoftColorRainbowFunctionReverseUnAdjusted(Math.abs( ColorsLength ), sliderValue, BrightnessMultiplyer, Gradations);//8th Square In SimpleDiagnosticsClass.java
		rgb = color.rgb;
		argb = color.argb;
		fxColor = color.ToFXColor();
		return color;
	}
	public Object SimpleCustomColor(double ColorsLength, double LocationOfStillMovement, double LocationOfColorMovement, double MarkerInLength, double RepeatLength, double[][] RGBcolorArray)//Put Any Amount Of Custom Colors In RGB Format Not ARGB As Opacity Variabled Funtions And Transparency Slider Can Be Implimented Seperatly For That //
	{
		if ( LocationOfStillMovement == 0 )
			sliderValue = SliderFormulateJustMovingColors( ColorsLength, MarkerInLength, LocationOfColorMovement, RepeatLength );
		else
			if ( LocationOfColorMovement == 0)
				sliderValue = SliderFormulateSlidingTransitionsSameColors( ColorsLength, MarkerInLength, LocationOfStillMovement, RepeatLength );
			else
				sliderValue = SliderFormulateDoubleSliding( ColorsLength, MarkerInLength, LocationOfStillMovement, LocationOfColorMovement, RepeatLength );
		this.color.RainbowSoftCustomColorFunction(Math.abs( ColorsLength ), sliderValue, RGBcolorArray);//9th Square In SimpleDiagnosticsClass.java
		rgb = color.rgb;
		argb = color.argb;
		fxColor = color.ToFXColor();
		return color;
	}
	public Object SimpleCustomColor(double ColorsLength, double LocationOfStillMovement, double LocationOfColorMovement, double MarkerInLength, double RepeatLength, Color[] FXcolorArray)//For Colors In JavaFX //
	{
		if ( LocationOfStillMovement == 0 )
			sliderValue = SliderFormulateJustMovingColors( ColorsLength, MarkerInLength, LocationOfColorMovement, RepeatLength );
		else
			if ( LocationOfColorMovement == 0)
				sliderValue = SliderFormulateSlidingTransitionsSameColors( ColorsLength, MarkerInLength, LocationOfStillMovement, RepeatLength );
			else
				sliderValue = SliderFormulateDoubleSliding( ColorsLength, MarkerInLength, LocationOfStillMovement, LocationOfColorMovement, RepeatLength );
		this.color.RainbowSoftCustomColorFunction(Math.abs( ColorsLength ), sliderValue, FXcolorArray);//10th Square In SimpleDiagnosticsClass.java
		rgb = color.rgb;
		argb = color.argb;
		fxColor = color.ToFXColor();
		return color;
	}
	public Object SimpleCustomColor(double ColorsLength, double LocationOfStillMovement, double LocationOfColorMovement, double MarkerInLength, double RepeatLength, double BrightnessMultiplyer, int Gradations, double[][] ARGBcolorArray )//Things Should Follow For The Rest Of The Simple Linear Rainbows Until Opacity //
	{
		if ( LocationOfStillMovement == 0 )
			sliderValue = SliderFormulateJustMovingColors( ColorsLength, MarkerInLength, LocationOfColorMovement, RepeatLength );
		else
			if ( LocationOfColorMovement == 0)
				sliderValue = SliderFormulateSlidingTransitionsSameColors( ColorsLength, MarkerInLength, LocationOfStillMovement, RepeatLength );
			else
				sliderValue = SliderFormulateDoubleSliding( ColorsLength, MarkerInLength, LocationOfStillMovement, LocationOfColorMovement, RepeatLength );
		this.color.RainbowSoftCustomColorFunctionAdjusted(Math.abs( ColorsLength ), sliderValue, BrightnessMultiplyer, Gradations, ARGBcolorArray);//11th Square In SimpleDiagnosticsClass.java
		rgb = color.rgb;
		argb = color.argb;
		fxColor = color.ToFXColor();
		return color;
	}
	public Object SimpleCustomColor(double ColorsLength, double LocationOfStillMovement, double LocationOfColorMovement, double MarkerInLength, double RepeatLength, double BrightnessMultiplyer, int Gradations, double[][] ARGBcolorArray, boolean Adjusted ) //
	{
		if ( LocationOfStillMovement == 0 )
			sliderValue = SliderFormulateJustMovingColors( ColorsLength, MarkerInLength, LocationOfColorMovement, RepeatLength );
		else
			if ( LocationOfColorMovement == 0)
				sliderValue = SliderFormulateSlidingTransitionsSameColors( ColorsLength, MarkerInLength, LocationOfStillMovement, RepeatLength );
			else
				sliderValue = SliderFormulateDoubleSliding( ColorsLength, MarkerInLength, LocationOfStillMovement, LocationOfColorMovement, RepeatLength );
		if ( Adjusted )
			this.color.RainbowSoftCustomColorFunctionAdjusted(Math.abs( ColorsLength ), sliderValue, BrightnessMultiplyer, Gradations, ARGBcolorArray);//12th Square In SimpleDiagnosticsClass.java
		else
			this.color.RainbowSoftCustomColorFunctionUnAdjusted(Math.abs( ColorsLength ), sliderValue, BrightnessMultiplyer, Gradations, ARGBcolorArray);//13th Square In SimpleDiagnosticsClass.java
		rgb = color.rgb;
		argb = color.argb;
		fxColor = color.ToFXColor();
		return color;
	}
	public Object SimpleCustomColor(double ColorsLength, double LocationOfStillMovement, double LocationOfColorMovement, double MarkerInLength, double RepeatLength, double BrightnessMultiplyer, int Gradations, Color[] FXcolorArray ) //
	{
		if ( LocationOfStillMovement == 0 )
			sliderValue = SliderFormulateJustMovingColors( ColorsLength, MarkerInLength, LocationOfColorMovement, RepeatLength );
		else
			if ( LocationOfColorMovement == 0)
				sliderValue = SliderFormulateSlidingTransitionsSameColors( ColorsLength, MarkerInLength, LocationOfStillMovement, RepeatLength );
			else
				sliderValue = SliderFormulateDoubleSliding( ColorsLength, MarkerInLength, LocationOfStillMovement, LocationOfColorMovement, RepeatLength );
		//System.out.println( "2D FXcolors Brightnesses" + FXcolorArray[0].getBrightness() + FXcolorArray[1].getBrightness() + FXcolorArray[2].getBrightness() + FXcolorArray[3].getBrightness() + FXcolorArray[4].getBrightness() + FXcolorArray[5].getBrightness() );
		this.color.RainbowSoftCustomColorFunctionAdjusted(Math.abs( ColorsLength ), sliderValue, BrightnessMultiplyer, Gradations, FXcolorArray);//14th Square In SimpleDiagnosticsClass.java
		rgb = color.rgb;
		argb = color.argb;
		fxColor = color.ToFXColor();
		return color;
	}
	public Object SimpleCustomColor(double ColorsLength, double LocationOfStillMovement, double LocationOfColorMovement, double MarkerInLength, double RepeatLength, double BrightnessMultiplyer, int Gradations, Color[] FXcolorArray, boolean Adjusted ) //
	{
		if ( LocationOfStillMovement == 0 )
			sliderValue = SliderFormulateJustMovingColors( ColorsLength, MarkerInLength, LocationOfColorMovement, RepeatLength );
		else
			if ( LocationOfColorMovement == 0)
				sliderValue = SliderFormulateSlidingTransitionsSameColors( ColorsLength, MarkerInLength, LocationOfStillMovement, RepeatLength );
			else
				sliderValue = SliderFormulateDoubleSliding( ColorsLength, MarkerInLength, LocationOfStillMovement, LocationOfColorMovement, RepeatLength );
		//System.out.println( "2D FXcolors Brightnesses" + FXcolorArray[0].getBrightness() + FXcolorArray[1].getBrightness() + FXcolorArray[2].getBrightness() + FXcolorArray[3].getBrightness() + FXcolorArray[4].getBrightness() + FXcolorArray[5].getBrightness() );
		if ( Adjusted )
			this.color.RainbowSoftCustomColorFunctionAdjusted(Math.abs( ColorsLength ), sliderValue, BrightnessMultiplyer, Gradations, FXcolorArray);//15th Square In SimpleDiagnosticsClass.java
		else
			this.color.RainbowSoftCustomColorFunctionUnAdjusted(Math.abs( ColorsLength ), sliderValue, BrightnessMultiplyer, Gradations, FXcolorArray);//16th Square In SimpleDiagnosticsClass.java
		rgb = color.rgb;
		argb = color.argb;
		fxColor = color.ToFXColor();
		return color;
	}
	public Object SimpleRainbow(double ColorsLength, double LocationOfStillMovement, double LocationOfColorMovement, double MarkerInLength, double RepeatLength, double BrightnessMultiplyer, int Gradations, double OpacityBefore, double OpacityAfter )//Same As Above Except Opacity Goes From OpacityBefore To OpacityAfter From Red To Purple And For Reverse Purple To Pink To Red With Rainbow Colors In-between
	{
		if ( LocationOfStillMovement == 0 )
			sliderValue = SliderFormulateJustMovingColors( ColorsLength, MarkerInLength, LocationOfColorMovement, RepeatLength );
		else
			if ( LocationOfColorMovement == 0)
				sliderValue = SliderFormulateSlidingTransitionsSameColors( ColorsLength, MarkerInLength, LocationOfStillMovement, RepeatLength );
			else
				sliderValue = SliderFormulateDoubleSliding( ColorsLength, MarkerInLength, LocationOfStillMovement, LocationOfColorMovement, RepeatLength );
		this.color.RainbowSoftColorRainbowTransparencyFunctionAdjusted(Math.abs( ColorsLength ), sliderValue, BrightnessMultiplyer, Gradations, OpacityBefore, OpacityAfter);//17th Square In SimpleDiagnosticsClass.java
		rgb = color.rgb;
		argb = color.argb;
		fxColor = color.ToFXColor();
		return color;
	}
	public Object SimpleRainbow(double ColorsLength, double LocationOfStillMovement, double LocationOfColorMovement, double MarkerInLength, double RepeatLength, double BrightnessMultiplyer, int Gradations, boolean Adjusted, double OpacityBefore, double OpacityAfter ) //
	{
		if ( LocationOfStillMovement == 0 )
			sliderValue = SliderFormulateJustMovingColors( ColorsLength, MarkerInLength, LocationOfColorMovement, RepeatLength );
		else
			if ( LocationOfColorMovement == 0)
				sliderValue = SliderFormulateSlidingTransitionsSameColors( ColorsLength, MarkerInLength, LocationOfStillMovement, RepeatLength );
			else
				sliderValue = SliderFormulateDoubleSliding( ColorsLength, MarkerInLength, LocationOfStillMovement, LocationOfColorMovement, RepeatLength );
		if ( Adjusted )
			this.color.RainbowSoftColorRainbowTransparencyFunctionAdjusted(Math.abs( ColorsLength ), sliderValue, BrightnessMultiplyer, Gradations, OpacityBefore, OpacityAfter);//18th Square In SimpleDiagnosticsClass.java
		else
			this.color.RainbowSoftColorRainbowTransparencyFunctionUnAdjusted(Math.abs( ColorsLength ), sliderValue, BrightnessMultiplyer, Gradations, OpacityBefore, OpacityAfter);//19th Square In SimpleDiagnosticsClass.java
		rgb = color.rgb;
		argb = color.argb;
		fxColor = color.ToFXColor();
		return color;
	}
	public Object SimpleRainbowReverse(double ColorsLength, double LocationOfStillMovement, double LocationOfColorMovement, double MarkerInLength, double RepeatLength, double BrightnessMultiplyer, int Gradations, double OpacityBefore, double OpacityAfter ) //
	{
		if ( LocationOfStillMovement == 0 )
			sliderValue = SliderFormulateJustMovingColors( ColorsLength, MarkerInLength, LocationOfColorMovement, RepeatLength );
		else
			if ( LocationOfColorMovement == 0)
				sliderValue = SliderFormulateSlidingTransitionsSameColors( ColorsLength, MarkerInLength, LocationOfStillMovement, RepeatLength );
			else
				sliderValue = SliderFormulateDoubleSliding( ColorsLength, MarkerInLength, LocationOfStillMovement, LocationOfColorMovement, RepeatLength );
		this.color.RainbowSoftColorRainbowTransparencyFunctionReverseAdjusted(Math.abs( ColorsLength ), sliderValue, BrightnessMultiplyer, Gradations, OpacityBefore, OpacityAfter);//20th Square In SimpleDiagnosticsClass.java
		rgb = color.rgb;
		argb = color.argb;
		fxColor = color.ToFXColor();
		return color;
	}
	public Object SimpleRainbowReverse(double ColorsLength, double LocationOfStillMovement, double LocationOfColorMovement, double MarkerInLength, double RepeatLength, double BrightnessMultiplyer, int Gradations, boolean Adjusted, double OpacityBefore, double OpacityAfter ) //
	{
		if ( LocationOfStillMovement == 0 )
			sliderValue = SliderFormulateJustMovingColors( ColorsLength, MarkerInLength, LocationOfColorMovement, RepeatLength );
		else
			if ( LocationOfColorMovement == 0)
				sliderValue = SliderFormulateSlidingTransitionsSameColors( ColorsLength, MarkerInLength, LocationOfStillMovement, RepeatLength );
			else
				sliderValue = SliderFormulateDoubleSliding( ColorsLength, MarkerInLength, LocationOfStillMovement, LocationOfColorMovement, RepeatLength );
		if ( Adjusted )
			this.color.RainbowSoftColorRainbowTransparencyFunctionReverseAdjusted(Math.abs( ColorsLength ), sliderValue, BrightnessMultiplyer, Gradations, OpacityBefore, OpacityAfter);//21st Square In SimpleDiagnosticsClass.java
		else
			this.color.RainbowSoftColorRainbowTransparencyFunctionReverseUnAdjusted(Math.abs( ColorsLength ), sliderValue, BrightnessMultiplyer, Gradations, OpacityBefore, OpacityAfter);//22nd Square In SimpleDiagnosticsClass.java
		rgb = color.rgb;
		argb = color.argb;
		fxColor = color.ToFXColor();
		return color;
	}
	public Object SimpleCustomColor(double ColorsLength, double LocationOfStillMovement, double LocationOfColorMovement, double MarkerInLength, double RepeatLength, double BrightnessMultiplyer, int Gradations, double[][] RGBcolorArray, boolean Adjusted, double OpacityBefore, double OpacityAfter ) //
	{
		if ( LocationOfStillMovement == 0 )
			sliderValue = SliderFormulateJustMovingColors( ColorsLength, MarkerInLength, LocationOfColorMovement, RepeatLength );
		else
			if ( LocationOfColorMovement == 0)
				sliderValue = SliderFormulateSlidingTransitionsSameColors( ColorsLength, MarkerInLength, LocationOfStillMovement, RepeatLength );
			else
				sliderValue = SliderFormulateDoubleSliding( ColorsLength, MarkerInLength, LocationOfStillMovement, LocationOfColorMovement, RepeatLength );
		if ( Adjusted )
			this.color.RainbowSoftCustomColorTransparencyFunctionAdjusted(Math.abs( ColorsLength ), sliderValue, BrightnessMultiplyer, Gradations, RGBcolorArray, OpacityBefore, OpacityAfter);//23rd Square In SimpleDiagnosticsClass.java
		else
			this.color.RainbowSoftCustomColorTransparencyFunctionUnAdjusted(Math.abs( ColorsLength ), sliderValue, BrightnessMultiplyer, Gradations, RGBcolorArray, OpacityBefore, OpacityAfter);//24th Square In SimpleDiagnosticsClass.java
		rgb = color.rgb;
		argb = color.argb;
		fxColor = color.ToFXColor();
		return color;
	}
	public Object SimpleCustomColor(double ColorsLength, double LocationOfStillMovement, double LocationOfColorMovement, double MarkerInLength, double RepeatLength, double BrightnessMultiplyer, int Gradations, Color[] FXcolorArray, boolean Adjusted, double OpacityBefore, double OpacityAfter )//Same Follows From Above To Here But Not The Next Function Which Is Not A Linear Rainbow //
	{
		if ( LocationOfStillMovement == 0 )
			sliderValue = SliderFormulateJustMovingColors( ColorsLength, MarkerInLength, LocationOfColorMovement, RepeatLength );
		else
			if ( LocationOfColorMovement == 0)
				sliderValue = SliderFormulateSlidingTransitionsSameColors( ColorsLength, MarkerInLength, LocationOfStillMovement, RepeatLength );
			else
				sliderValue = SliderFormulateDoubleSliding( ColorsLength, MarkerInLength, LocationOfStillMovement, LocationOfColorMovement, RepeatLength );
		if ( Adjusted )
			this.color.RainbowSoftCustomColorTransparencyFunctionAdjusted(Math.abs( ColorsLength ), sliderValue, BrightnessMultiplyer, Gradations, FXcolorArray, OpacityBefore, OpacityAfter);//25th Square In SimpleDiagnosticsClass.java
		else
			this.color.RainbowSoftCustomColorTransparencyFunctionUnAdjusted(Math.abs( ColorsLength ), sliderValue, BrightnessMultiplyer, Gradations, FXcolorArray, OpacityBefore, OpacityAfter);//26th Square In SimpleDiagnosticsClass.java
		rgb = color.rgb;
		argb = color.argb;
		fxColor = color.ToFXColor();
		return color;
	}

	public Object RainbowDiskVaryated(double ColorsLength, double LocationOfStillMovement, double LocationOfColorMovement, double x, double y, double RepeatRadius, boolean Reversed)//Choose ColorsLength To Be Same As RepeatRadius Of Rainbow Disk Line With x & y Precentered Before Accessing This Function And Location Is The Connection To The xSlider Time Changing Variable
	{//With NonPrePost Color Sliders; Also Looks Cool When Into RainbowSoftColorRainbowFunction -> ColorsLength / 6 //Also Looks Cool When RepeatRadius In Here Is Halfed //Also Looks Cool When While < & > Is Swapped //Below Add - Location; and No sliderValue + ColorsLength For Cool Defects
		originalFormulaValue = - Math.pow( Math.pow(x, 2) + Math.pow(y, 2), 0.5 );
		if ( LocationOfStillMovement == 0 )//Above Provides NonAligned RepeatFactor/ColorsLength != 1 For Shrinked[>1] And Abridged Rainbow[<1]
			sliderValue = SliderFormulateJustMovingColors( ColorsLength, originalFormulaValue, LocationOfColorMovement, RepeatRadius );
		else
			if ( LocationOfColorMovement == 0)
				sliderValue = SliderFormulateSlidingTransitionsSameColors( ColorsLength, originalFormulaValue, LocationOfStillMovement, RepeatRadius );
			else
				sliderValue = SliderFormulateDoubleSliding( ColorsLength, originalFormulaValue, LocationOfStillMovement, LocationOfColorMovement, RepeatRadius );
		if ( Reversed )
			this.color.RainbowSoftColorRainbowFunctionReverse( ColorsLength, sliderValue ); //
		else
			this.color.RainbowSoftColorRainbowFunction( ColorsLength, sliderValue ); //
		rgb = color.rgb;
		argb = color.argb;
		fxColor = color.ToFXColor();
		return color;
	}
	public Object RainbowDiskGradated(double ColorsLength, double LocationOfStillMovement, double LocationOfColorMovement, double x, double y, double RepeatRadius, boolean Reversed, double BrightnessMultiplyer, int Gradations, double OpacityBefore, double OpacityAfter, boolean Adjusted )//Same As Above Except Gradated Un/Adjusted With Opacity Changes
	{
		originalFormulaValue = - Math.pow( Math.pow(x, 2) + Math.pow(y, 2), 0.5 );
		if ( LocationOfStillMovement == 0 )//Above Provides NonAligned RepeatFactor/ColorsLength != 1 For Shrinked[>1] And Abridged Rainbow[<1]
			sliderValue = SliderFormulateJustMovingColors( ColorsLength, originalFormulaValue, LocationOfColorMovement, RepeatRadius );
		else
			if ( LocationOfColorMovement == 0)
				sliderValue = SliderFormulateSlidingTransitionsSameColors( ColorsLength, originalFormulaValue, LocationOfStillMovement, RepeatRadius );
			else
				sliderValue = SliderFormulateDoubleSliding( ColorsLength, originalFormulaValue, LocationOfStillMovement, LocationOfColorMovement, RepeatRadius );
		if ( Adjusted )
			if ( Reversed )
				this.color.RainbowSoftColorRainbowTransparencyFunctionReverseAdjusted(Math.abs( ColorsLength ), sliderValue, BrightnessMultiplyer, Gradations, OpacityBefore, OpacityAfter); //25th Square In SimpleDiagnosticsClass.java
			else
				this.color.RainbowSoftColorRainbowTransparencyFunctionAdjusted(Math.abs( ColorsLength ), sliderValue, BrightnessMultiplyer, Gradations, OpacityBefore, OpacityAfter); //26th Square In SimpleDiagnosticsClass.java
		else
			if ( Reversed )
				this.color.RainbowSoftColorRainbowTransparencyFunctionReverseUnAdjusted(Math.abs( ColorsLength ), sliderValue, BrightnessMultiplyer, Gradations, OpacityBefore, OpacityAfter); //25th Square In SimpleDiagnosticsClass.java
			else
				this.color.RainbowSoftColorRainbowTransparencyFunctionUnAdjusted(Math.abs( ColorsLength ), sliderValue, BrightnessMultiplyer, Gradations, OpacityBefore, OpacityAfter); //26th Square In SimpleDiagnosticsClass.java
		rgb = color.rgb;
		argb = color.argb;
		fxColor = color.ToFXColor();
		return color;
	}
	public Object RainbowDiskVaryated(double ColorsLength, double LocationOfStillMovement, double LocationOfColorMovement, double x, double y, double RepeatRadius, Color[] FXcolorArray, boolean Reversed)//Same As Above Except With Any Amount Of Custom Colors And Not All Accouchriments As Below
	{
		originalFormulaValue = - Math.pow( Math.pow(x, 2) + Math.pow(y, 2), 0.5 );
		if ( LocationOfStillMovement == 0 )//Above Provides NonAligned RepeatFactor/ColorsLength != 1 For Shrinked[>1] And Abridged Rainbow[<1]
			sliderValue = SliderFormulateJustMovingColors( ColorsLength, originalFormulaValue, LocationOfColorMovement, RepeatRadius );
		else
			if ( LocationOfColorMovement == 0)
				sliderValue = SliderFormulateSlidingTransitionsSameColors( ColorsLength, originalFormulaValue, LocationOfStillMovement, RepeatRadius );
			else
				sliderValue = SliderFormulateDoubleSliding( ColorsLength, originalFormulaValue, LocationOfStillMovement, LocationOfColorMovement, RepeatRadius );
		if (Reversed)
			this.color.RainbowSoftCustomColorFunction(Math.abs( ColorsLength ), sliderValue, CustomColorsReverser(FXcolorArray)); //
		else
			this.color.RainbowSoftCustomColorFunction(Math.abs( ColorsLength ), sliderValue, FXcolorArray); //
		rgb = color.rgb;
		argb = color.argb;
		fxColor = color.ToFXColor();
		return color;
	}
	public Object RainbowDiskGradated(double ColorsLength, double LocationOfStillMovement, double LocationOfColorMovement, double x, double y, double RepeatRadius, Color[] FXcolorArray, boolean Reversed, double BrightnessMultiplyer, int Gradations, double OpacityBefore, double OpacityAfter, boolean Adjusted )//Same As Above Super Function For Any Custom Colors Disks Which Is Last Rainbow Disk Function
	{
		originalFormulaValue = - Math.pow( Math.pow(x, 2) + Math.pow(y, 2), 0.5 );
		if ( LocationOfStillMovement == 0 )//Above Provides NonAligned RepeatFactor/ColorsLength != 1 For Shrinked[>1] And Abridged Rainbow[<1]
			sliderValue = SliderFormulateJustMovingColors( ColorsLength, originalFormulaValue, LocationOfColorMovement, RepeatRadius );
		else
			if ( LocationOfColorMovement == 0)
				sliderValue = SliderFormulateSlidingTransitionsSameColors( ColorsLength, originalFormulaValue, LocationOfStillMovement, RepeatRadius );
			else
				sliderValue = SliderFormulateDoubleSliding( ColorsLength, originalFormulaValue, LocationOfStillMovement, LocationOfColorMovement, RepeatRadius );
		if ( Adjusted )
			if ( Reversed )
				this.color.RainbowSoftCustomColorTransparencyFunctionAdjusted(Math.abs( ColorsLength ), sliderValue, BrightnessMultiplyer, Gradations, CustomColorsReverser(FXcolorArray), OpacityBefore, OpacityAfter); //25th Square In SimpleDiagnosticsClass.java
			else
				this.color.RainbowSoftCustomColorTransparencyFunctionAdjusted(Math.abs( ColorsLength ), sliderValue, BrightnessMultiplyer, Gradations, FXcolorArray, OpacityBefore, OpacityAfter); //26th Square In SimpleDiagnosticsClass.java
		else
			if ( Reversed )
				this.color.RainbowSoftCustomColorTransparencyFunctionUnAdjusted(Math.abs( ColorsLength ), sliderValue, BrightnessMultiplyer, Gradations, CustomColorsReverser(FXcolorArray), OpacityBefore, OpacityAfter); //25th Square In SimpleDiagnosticsClass.java
			else
				this.color.RainbowSoftCustomColorTransparencyFunctionUnAdjusted(Math.abs( ColorsLength ), sliderValue, BrightnessMultiplyer, Gradations, FXcolorArray,  OpacityBefore, OpacityAfter); //26th Square In SimpleDiagnosticsClass.java
		rgb = color.rgb;
		argb = color.argb;
		fxColor = color.ToFXColor();
		return color;
	}

	public Object RainbowClockVaryated(double ColorsFactor, double LocationOfStillMovement, double LocationOfColorMovement, double x, double y, double RepeatFactor, boolean Reversed)//NumberOfClock Hands Will Provide A Disjointed Series Of Rainbow Triangles, ClockHandDisplacement = Math.PI For Normal Clock//Choose ColorsFactor To Be Same As RepeatFactor Of Rainbow Clock With x & y Precentered Before Accessing This Function And Location Is The Connection To The xSlider Time Changing Variable //, double OneLessThanTheNumberOfClockHands, double ClockHandDisplacement
	{
		originalFormulaValue = - Math.atan2(x, y) - Math.PI;
		if ( LocationOfStillMovement == 0 )//Above Provides NonAligned RepeatFactor/ColorsLength != 1 For Shrinked[>1] And Abridged Rainbow[<1]
			sliderValue = SliderFormulateJustMovingColors( ColorsFactor, originalFormulaValue, - LocationOfColorMovement, RepeatFactor );
		else
			if ( LocationOfColorMovement == 0)
				sliderValue = SliderFormulateSlidingTransitionsSameColors( ColorsFactor, originalFormulaValue, - LocationOfStillMovement, RepeatFactor );
			else
				sliderValue = SliderFormulateDoubleSliding( ColorsFactor, originalFormulaValue, - LocationOfStillMovement, - LocationOfColorMovement, RepeatFactor );
		if ( Reversed )
			this.color.RainbowSoftColorRainbowFunctionReverse(Math.abs( ColorsFactor ), sliderValue); //
		else
			this.color.RainbowSoftColorRainbowFunction(Math.abs( ColorsFactor ), sliderValue); //
		rgb = color.rgb;
		argb = color.argb;
		fxColor = color.ToFXColor();
		return color;
	}
	public Object RainbowClockGradated(double ColorsFactor, double LocationOfStillMovement, double LocationOfColorMovement, double x, double y, double RepeatFactor, double OneLessThanTheNumberOfClockHands, double ClockHandDisplacement, boolean Reversed, double BrightnessMultiplyer, int Gradations, double OpacityBefore, double OpacityAfter, boolean Adjusted )//Same As Above Except Gradated Un/Adjusted With Opacity Changes
	{//(NotNeeded)Longness Definitely Needed sliderValue = SliderFormulateJustMovingColors( ColorsFactor, ( 180 - ClockHandDisplacement * ( Math.PI - 3.14159265358979 ) / ( Math.PI - 3.1415926535897 ) * ( Math.PI - 3.141592653589 ) / ( Math.PI - 3.14159265358 ) * ( Math.PI - 3.1415926535 ) / ( Math.PI - 3.141592653 ) * ( Math.PI - 3.14159265 ) / ( Math.PI - 3.1415926 ) * ( Math.PI - 3.141592 ) / ( Math.PI - 3.14159 ) * ( Math.PI - 3.1415 ) / ( Math.PI - 3.141 ) * ( Math.PI - 3.14 ) / ( Math.PI - 3.1 ) * ( Math.PI - 3 ) ) * ( Math.atan2(x, y) + ClockHandDisplacement ) / OneLessThanTheNumberOfClockHands, Location, RepeatFactor );//Math.PI = 3.141592653589793 Points And Segments May Be A Key To Unraveling Pi In This Situation
		//(NotNeeded)sliderValue = SliderFormulateJustMovingColors( ColorsFactor, ( 180 - 10/* - ClockHandDisplacement * ( Math.PI - 3.14159265358979 ) / ( Math.PI - 3.1415926535897 ) * ( Math.PI - 3.141592653589 ) / ( Math.PI - 3.14159265358 ) * ( Math.PI - 3.1415926535 ) / ( Math.PI - 3.141592653 ) * ( Math.PI - 3.14159265 ) / ( Math.PI - 3.1415926 ) * ( Math.PI - 3.141592 ) / ( Math.PI - 3.14159 ) * ( Math.PI - 3.1415 ) / ( Math.PI - 3.141 ) * ( Math.PI - 3.14 ) / ( Math.PI - 3.1 ) * ( Math.PI - 3 ) */ ) * ( Math.atan2(x, y) + ClockHandDisplacement ) / OneLessThanTheNumberOfClockHands, Location, RepeatFactor );//Math.PI = 3.141592653589793 Points And Segments May Be A Key To Unraveling Pi In This Situation
		originalFormulaValue = - Math.atan2(x, y) - Math.PI;
		if ( LocationOfStillMovement == 0 )//Above Provides NonAligned RepeatFactor/ColorsLength != 1 For Shrinked[>1] And Abridged Rainbow[<1]
			sliderValue = SliderFormulateJustMovingColors( ColorsFactor, originalFormulaValue, - LocationOfColorMovement, RepeatFactor );
		else
			if ( LocationOfColorMovement == 0)
				sliderValue = SliderFormulateSlidingTransitionsSameColors( ColorsFactor, originalFormulaValue, - LocationOfStillMovement, RepeatFactor );
			else
				sliderValue = SliderFormulateDoubleSliding( ColorsFactor, originalFormulaValue, - LocationOfStillMovement, - LocationOfColorMovement, RepeatFactor );
		if ( Adjusted )
			if ( Reversed )
				this.color.RainbowSoftColorRainbowTransparencyFunctionReverseAdjusted(Math.abs( ColorsFactor ), sliderValue, BrightnessMultiplyer, Gradations, OpacityBefore, OpacityAfter); //25th Square In SimpleDiagnosticsClass.java
			else
				this.color.RainbowSoftColorRainbowTransparencyFunctionAdjusted(Math.abs( ColorsFactor ), sliderValue, BrightnessMultiplyer, Gradations, OpacityBefore, OpacityAfter); //26th Square In SimpleDiagnosticsClass.java
		else
			if ( Reversed )
				this.color.RainbowSoftColorRainbowTransparencyFunctionReverseUnAdjusted(Math.abs( ColorsFactor ), sliderValue, BrightnessMultiplyer, Gradations, OpacityBefore, OpacityAfter); //25th Square In SimpleDiagnosticsClass.java
			else
				this.color.RainbowSoftColorRainbowTransparencyFunctionUnAdjusted(Math.abs( ColorsFactor ), sliderValue, BrightnessMultiplyer, Gradations, OpacityBefore, OpacityAfter); //26th Square In SimpleDiagnosticsClass.java		rgb = color.rgb;
		argb = color.argb;
		fxColor = color.ToFXColor();
		return color;
	}
	public Object RainbowClockVaryated(double ColorsFactor, double LocationOfStillMovement, double LocationOfColorMovement, double x, double y, double RepeatFactor, Color[] FXcolorArray, double OneLessThanTheNumberOfClockHands, double ClockHandDisplacement, boolean Reversed )//Same As Above Except With Any Amount Of Custom Colors And Not All Accouchriments As Below
	{
		originalFormulaValue = - Math.atan2(x, y) - Math.PI;
		if ( LocationOfStillMovement == 0 )//Above Provides NonAligned RepeatFactor/ColorsLength != 1 For Shrinked[>1] And Abridged Rainbow[<1]
			sliderValue = SliderFormulateJustMovingColors( ColorsFactor, originalFormulaValue, - LocationOfColorMovement, RepeatFactor );
		else
			if ( LocationOfColorMovement == 0)
				sliderValue = SliderFormulateSlidingTransitionsSameColors( ColorsFactor, originalFormulaValue, - LocationOfStillMovement, RepeatFactor );
			else
				sliderValue = SliderFormulateDoubleSliding( ColorsFactor, originalFormulaValue, - LocationOfStillMovement, - LocationOfColorMovement, RepeatFactor );
		if (Reversed)
			this.color.RainbowSoftCustomColorFunction(Math.abs( ColorsFactor ), sliderValue, CustomColorsReverser(FXcolorArray)); //
		else
			this.color.RainbowSoftCustomColorFunction(Math.abs( ColorsFactor ), sliderValue, FXcolorArray); //
		rgb = color.rgb;
		argb = color.argb;
		fxColor = color.ToFXColor();
		return color;
	}
	public Object RainbowClockGradated(double ColorsFactor, double LocationOfStillMovement, double LocationOfColorMovement, double x, double y, double RepeatFactor, Color[] FXcolorArray, double OneLessThanTheNumberOfClockHands, double ClockHandDisplacement, boolean Reversed, double BrightnessMultiplyer, int Gradations, double OpacityBefore, double OpacityAfter, boolean Adjusted )//Same As Above Super Function For Any Custom Colors Clocks Which Is Last Rainbow Disk Function
	{
		originalFormulaValue = - Math.atan2(x, y) - Math.PI;
		if ( LocationOfStillMovement == 0 )//Above Provides NonAligned RepeatFactor/ColorsLength != 1 For Shrinked[>1] And Abridged Rainbow[<1]
			sliderValue = SliderFormulateJustMovingColors( ColorsFactor, originalFormulaValue, - LocationOfColorMovement, RepeatFactor );
		else
			if ( LocationOfColorMovement == 0)
				sliderValue = SliderFormulateSlidingTransitionsSameColors( ColorsFactor, originalFormulaValue, - LocationOfStillMovement, RepeatFactor );
			else
				sliderValue = SliderFormulateDoubleSliding( ColorsFactor, originalFormulaValue, - LocationOfStillMovement, - LocationOfColorMovement, RepeatFactor );
		if ( Adjusted )
			if ( Reversed )
				this.color.RainbowSoftCustomColorTransparencyFunctionAdjusted(Math.abs( ColorsFactor ), sliderValue, BrightnessMultiplyer, Gradations, CustomColorsReverser(FXcolorArray), OpacityBefore, OpacityAfter); //25th Square In SimpleDiagnosticsClass.java
			else
				this.color.RainbowSoftCustomColorTransparencyFunctionAdjusted(Math.abs( ColorsFactor ), sliderValue, BrightnessMultiplyer, Gradations, FXcolorArray, OpacityBefore, OpacityAfter); //26th Square In SimpleDiagnosticsClass.java
		else
			if ( Reversed )
				this.color.RainbowSoftCustomColorTransparencyFunctionUnAdjusted(Math.abs( ColorsFactor ), sliderValue, BrightnessMultiplyer, Gradations, CustomColorsReverser(FXcolorArray), OpacityBefore, OpacityAfter); //25th Square In SimpleDiagnosticsClass.java
			else
				this.color.RainbowSoftCustomColorTransparencyFunctionUnAdjusted(Math.abs( ColorsFactor ), sliderValue, BrightnessMultiplyer, Gradations, FXcolorArray,  OpacityBefore, OpacityAfter); //26th Square In SimpleDiagnosticsClass.java
		rgb = color.rgb;
		argb = color.argb;
		fxColor = color.ToFXColor();
		return color;
	}

	//Search For Or Put In Accessing Class: //pattern2D.RainbowSpiralVaryated( fullAngle, xSlider, ( x - HalfedDim.width ) / 3., ( y - HalfedDim.height ) / 3., fullAngle, 24.6, 1, halfSreenDiagionalLength, false );//For Proper Rainbow Hypnosis Spiral
	//pattern2D.RainbowSpiralVaryated( fullAngle, xSlider, ( x - HalfedDim.width ) / 10., ( y - HalfedDim.height ) / 10., fullAngle, 144, 10, halfSreenDiagionalLength, false );//For Proper Rainbow Rainbow Shrunken
	//pattern2D.RainbowSpiralVaryated( fullAngle * 6, xSlider * 6, ( x - HalfedDim.width ) / 6., ( y - HalfedDim.height ) / 6., fullAngle, 88.8, 4, halfSreenDiagionalLength, false );//For Segment View
	//pattern2D.RainbowSpiralVaryated( fullAngle, xSlider * 3, ( x - HalfedDim.width ) / 6., ( y - HalfedDim.height ) / 6., fullAngle * 3, 66.6, 3, halfSreenDiagionalLength, false );//For View Of More Length Than 1 Segment, Values Must Be Mulitples Of Eachother Somehow 3 In This Instance
	//pattern2D.RainbowSpiralVaryated( fullAngle, xSlider, ( x - HalfedDim.width ) / 1., ( y - HalfedDim.height ) / 1., fullAngle, 999, 1680, halfSreenDiagionalLength, false );//For Proper Rainbow PsychaHypnotic
	public Object RainbowSpiralVaryated(double ColorsFactor, double LocationOfStillMovement, double LocationOfColorMovement, double x, double y, double RepeatFactor, double SpiralFactor, double NumberOfSpirals, double HalfSreenDiagionalLength, boolean Reversed)//SpiralFactor = 24.6 For HypnosisSpiral NumberOfSpirals = 1 x&y/3., For More Sprialing Increase Spiral Factor, For Ninja Shrunken; SpiralFactor = 88.8 & NumberOfSpirals = 10 x&y/10.,  For Universe Generator; SpiralFactor = 66.6 & NumberOfSpirals = 4 x&y/6.,, x->y Relative Factoring Causes Warping Effect, Choose ColorsFactor To Be Same As RepeatFactor Of Rainbow Clock With x & y Precentered Before Accessing This Function And Location Is The Connection To The xSlider Time Changing Variable
	{//Make Math.pow(Math.pow(x, 2) + Math.pow(y, 2), 0.5 ) Into Math.pow(Math.pow(HalfedDim.width + 1, 2) + Math.pow(HalfedDim.height + 1, 2), 0.5) Or To SpiralFactor For Ghetto Many Rainbow Clocks
		//System.out.println("x: " + x +" y: " + y);
		originalFormulaValue = Math.pow( Math.pow(x, 2) + Math.pow(y, 2), 0.5 ) * SpiralFactor + ( - Math.atan2(x, y) + Math.PI ) * NumberOfSpirals * HalfSreenDiagionalLength;
		if ( LocationOfStillMovement == 0 )//Above Provides NonAligned RepeatFactor/ColorsLength != 1 For Shrinked[>1] And Abridged Rainbow[<1]
			sliderValue = SliderFormulateJustMovingColors( ColorsFactor, originalFormulaValue, - LocationOfColorMovement, RepeatFactor );
		else
			if ( LocationOfColorMovement == 0)
				sliderValue = SliderFormulateSlidingTransitionsSameColors( ColorsFactor, originalFormulaValue, - LocationOfStillMovement, RepeatFactor );
			else
				sliderValue = SliderFormulateDoubleSliding( ColorsFactor, originalFormulaValue, - LocationOfStillMovement, LocationOfColorMovement, RepeatFactor );
		if ( Reversed )
			this.color.RainbowSoftColorRainbowFunctionReverse( ColorsFactor, sliderValue ); //
		else
			this.color.RainbowSoftColorRainbowFunction( ColorsFactor, sliderValue ); //
		rgb = color.rgb;
		argb = color.argb;
		fxColor = color.ToFXColor();
		return color;
	}
	public Object RainbowSpiralGradated(double ColorsFactor, double LocationOfStillMovement, double LocationOfColorMovement, double x, double y, double RepeatFactor, double SpiralFactor, double NumberOfSpirals, double HalfSreenDiagionalLength, boolean Reversed, double BrightnessMultiplyer, int Gradations, double OpacityBefore, double OpacityAfter, boolean Adjusted )//Same As Above Except Gradated Un/Adjusted With Opacity Changes
	{
		originalFormulaValue = Math.pow( Math.pow(x, 2) + Math.pow(y, 2), 0.5 ) * SpiralFactor + ( - Math.atan2(x, y) + Math.PI ) * NumberOfSpirals * HalfSreenDiagionalLength;
		if ( LocationOfStillMovement == 0 )//Above Provides NonAligned RepeatFactor/ColorsLength != 1 For Shrinked[>1] And Abridged Rainbow[<1]
			sliderValue = SliderFormulateJustMovingColors( ColorsFactor, originalFormulaValue, - LocationOfColorMovement, RepeatFactor );
		else
			if ( LocationOfColorMovement == 0)
				sliderValue = SliderFormulateSlidingTransitionsSameColors( ColorsFactor, originalFormulaValue, - LocationOfStillMovement, RepeatFactor );
			else
				sliderValue = SliderFormulateDoubleSliding( ColorsFactor, originalFormulaValue, - LocationOfStillMovement, LocationOfColorMovement, RepeatFactor );
		if ( Adjusted )
			if ( Reversed )
				this.color.RainbowSoftColorRainbowTransparencyFunctionReverseAdjusted(Math.abs( ColorsFactor ), sliderValue, BrightnessMultiplyer, Gradations, OpacityBefore, OpacityAfter); //25th Square In SimpleDiagnosticsClass.java
			else
				this.color.RainbowSoftColorRainbowTransparencyFunctionAdjusted(Math.abs( ColorsFactor ), sliderValue, BrightnessMultiplyer, Gradations, OpacityBefore, OpacityAfter); //26th Square In SimpleDiagnosticsClass.java
		else
			if ( Reversed )
				this.color.RainbowSoftColorRainbowTransparencyFunctionReverseUnAdjusted(Math.abs( ColorsFactor ), sliderValue, BrightnessMultiplyer, Gradations, OpacityBefore, OpacityAfter); //25th Square In SimpleDiagnosticsClass.java
			else
				this.color.RainbowSoftColorRainbowTransparencyFunctionUnAdjusted(Math.abs( ColorsFactor ), sliderValue, BrightnessMultiplyer, Gradations, OpacityBefore, OpacityAfter); //26th Square In SimpleDiagnosticsClass.java		rgb = color.rgb;
		argb = color.argb;
		fxColor = color.ToFXColor();
		return color;
	}
	public Object RainbowSpiralVaryated(double ColorsFactor, double LocationOfStillMovement, double LocationOfColorMovement, double x, double y, double RepeatFactor, double SpiralFactor, double NumberOfSpirals, double HalfSreenDiagionalLength, Color[] FXcolorArray, boolean Reversed )//Same As Above Except With Any Amount Of Custom Colors And Not All Accouchriments As Below
	{
		originalFormulaValue = Math.pow( Math.pow(x, 2) + Math.pow(y, 2), 0.5 ) * SpiralFactor + ( - Math.atan2(x, y) + Math.PI ) * NumberOfSpirals * HalfSreenDiagionalLength;
		if ( LocationOfStillMovement == 0 )//Above Provides NonAligned RepeatFactor/ColorsLength != 1 For Shrinked[>1] And Abridged Rainbow[<1]
			sliderValue = SliderFormulateJustMovingColors( ColorsFactor, originalFormulaValue, - LocationOfColorMovement, RepeatFactor );
		else
			if ( LocationOfColorMovement == 0)
				sliderValue = SliderFormulateSlidingTransitionsSameColors( ColorsFactor, originalFormulaValue, - LocationOfStillMovement, RepeatFactor );
			else
				sliderValue = SliderFormulateDoubleSliding( ColorsFactor, originalFormulaValue, - LocationOfStillMovement, LocationOfColorMovement, RepeatFactor );
		if (Reversed)
			this.color.RainbowSoftCustomColorFunction(Math.abs( ColorsFactor ), sliderValue, CustomColorsReverser(FXcolorArray)); //
		else
			this.color.RainbowSoftCustomColorFunction(Math.abs( ColorsFactor ), sliderValue, FXcolorArray); //
		rgb = color.rgb;
		argb = color.argb;
		fxColor = color.ToFXColor();
		return color;
	}
	public Object RainbowSpiralGradated(double ColorsFactor, double LocationOfStillMovement, double LocationOfColorMovement, double x, double y, double RepeatFactor, double SpiralFactor, double NumberOfSpirals, double HalfSreenDiagionalLength, Color[] FXcolorArray, boolean Reversed, double BrightnessMultiplyer, int Gradations, double OpacityBefore, double OpacityAfter, boolean Adjusted )//Same As Above Super Function For Any Custom Colors Clocks Which Is Last Rainbow Disk Function
	{
		originalFormulaValue = Math.pow( Math.pow(x, 2) + Math.pow(y, 2), 0.5 ) * SpiralFactor + ( - Math.atan2(x, y) + Math.PI ) * NumberOfSpirals * HalfSreenDiagionalLength;
		if ( LocationOfStillMovement == 0 )//Above Provides NonAligned RepeatFactor/ColorsLength != 1 For Shrinked[>1] And Abridged Rainbow[<1]
			sliderValue = SliderFormulateJustMovingColors( ColorsFactor, originalFormulaValue, - LocationOfColorMovement, RepeatFactor );
		else
			if ( LocationOfColorMovement == 0)
				sliderValue = SliderFormulateSlidingTransitionsSameColors( ColorsFactor, originalFormulaValue, - LocationOfStillMovement, RepeatFactor );
			else
				sliderValue = SliderFormulateDoubleSliding( ColorsFactor, originalFormulaValue, - LocationOfStillMovement, LocationOfColorMovement, RepeatFactor );
		if ( Adjusted )
			if ( Reversed )
				this.color.RainbowSoftCustomColorTransparencyFunctionAdjusted(Math.abs( ColorsFactor ), sliderValue, BrightnessMultiplyer, Gradations, CustomColorsReverser(FXcolorArray), OpacityBefore, OpacityAfter); //25th Square In SimpleDiagnosticsClass.java
			else
				this.color.RainbowSoftCustomColorTransparencyFunctionAdjusted(Math.abs( ColorsFactor ), sliderValue, BrightnessMultiplyer, Gradations, FXcolorArray, OpacityBefore, OpacityAfter); //26th Square In SimpleDiagnosticsClass.java
		else
			if ( Reversed )
				this.color.RainbowSoftCustomColorTransparencyFunctionUnAdjusted(Math.abs( ColorsFactor ), sliderValue, BrightnessMultiplyer, Gradations, CustomColorsReverser(FXcolorArray), OpacityBefore, OpacityAfter); //25th Square In SimpleDiagnosticsClass.java
			else
				this.color.RainbowSoftCustomColorTransparencyFunctionUnAdjusted(Math.abs( ColorsFactor ), sliderValue, BrightnessMultiplyer, Gradations, FXcolorArray,  OpacityBefore, OpacityAfter); //26th Square In SimpleDiagnosticsClass.java
		rgb = color.rgb;
		argb = color.argb;
		fxColor = color.ToFXColor();
		return color;
	}
	public Object RainbowCheapFractalVaryated(double ColorsFactor, double LocationOfStillMovement, double LocationOfColorMovement, double x, double y, double RepeatFactor, double DimWidth, boolean Reversed)//Choose ColorsFactor To Be Same As RepeatFactor Of Rainbow Clock With x & y Precentered Before Accessing This Function And Location Is The Connection To The xSlider Time Changing Variable
	{//Try Instead For Double Trouble: originalFormulaValue = - ( y + 246 * LocationOfColorMovement ) - ( x + 24 * LocationOfColorMovement - 2 * DimWidth ) * Math.pow(LocationOfColorMovement , 1.20) / ( y + 0.5 ) - ( y + 246 * LocationOfStillMovement ) - ( x + 24 * LocationOfStillMovement - 2 * DimWidth ) * Math.pow(LocationOfStillMovement , 1.20) / ( y + 0.5 );
		originalFormulaValue = - ( y + 246 * LocationOfColorMovement ) - ( x + 24 * LocationOfColorMovement - 2 * DimWidth ) * Math.pow(LocationOfColorMovement , 1.20) / ( y + 0.5 );
		if ( LocationOfStillMovement == 0 )//Above Provides NonAligned RepeatFactor/ColorsLength != 1 For Shrinked[>1] And Abridged Rainbow[<1]
			sliderValue = SliderFormulateJustMovingColors( ColorsFactor, originalFormulaValue, LocationOfColorMovement, RepeatFactor );
		else
			if ( LocationOfColorMovement == 0)
				sliderValue = SliderFormulateSlidingTransitionsSameColors( ColorsFactor, originalFormulaValue, LocationOfStillMovement, RepeatFactor );
			else
				sliderValue = SliderFormulateDoubleSliding( ColorsFactor, originalFormulaValue, LocationOfStillMovement, LocationOfColorMovement, RepeatFactor );
		if ( Reversed )
			this.color.RainbowSoftColorRainbowFunctionReverse( ColorsFactor, sliderValue ); //
		else
			this.color.RainbowSoftColorRainbowFunction( ColorsFactor, sliderValue ); //
		rgb = color.rgb;
		argb = color.argb;
		fxColor = color.ToFXColor();
		return color;
	}
	public Object RainbowCheapFractalGradated(double ColorsFactor, double LocationOfStillMovement, double LocationOfColorMovement, double x, double y, double RepeatFactor, double DimWidth, boolean Reversed, double BrightnessMultiplyer, int Gradations, double OpacityBefore, double OpacityAfter, boolean Adjusted )//Same As Above Except Gradated Un/Adjusted With Opacity Changes
	{
		originalFormulaValue = - ( y + 246 * LocationOfColorMovement ) - ( x + 24 * LocationOfColorMovement - 2 * DimWidth ) * Math.pow(LocationOfColorMovement , 1.20) / ( y + 0.5 );
		if ( LocationOfStillMovement == 0 )//Above Provides NonAligned RepeatFactor/ColorsLength != 1 For Shrinked[>1] And Abridged Rainbow[<1]
			sliderValue = SliderFormulateJustMovingColors( ColorsFactor, originalFormulaValue, LocationOfColorMovement, RepeatFactor );
		else
			if ( LocationOfColorMovement == 0)
				sliderValue = SliderFormulateSlidingTransitionsSameColors( ColorsFactor, originalFormulaValue, LocationOfStillMovement, RepeatFactor );
			else
				sliderValue = SliderFormulateDoubleSliding( ColorsFactor, originalFormulaValue, LocationOfStillMovement, LocationOfColorMovement, RepeatFactor );
		if ( Adjusted )
			if ( Reversed )
				this.color.RainbowSoftColorRainbowTransparencyFunctionReverseAdjusted(Math.abs( ColorsFactor ), sliderValue, BrightnessMultiplyer, Gradations, OpacityBefore, OpacityAfter); //25th Square In SimpleDiagnosticsClass.java
			else
				this.color.RainbowSoftColorRainbowTransparencyFunctionAdjusted(Math.abs( ColorsFactor ), sliderValue, BrightnessMultiplyer, Gradations, OpacityBefore, OpacityAfter); //26th Square In SimpleDiagnosticsClass.java
		else
			if ( Reversed )
				this.color.RainbowSoftColorRainbowTransparencyFunctionReverseUnAdjusted(Math.abs( ColorsFactor ), sliderValue, BrightnessMultiplyer, Gradations, OpacityBefore, OpacityAfter); //25th Square In SimpleDiagnosticsClass.java
			else
				this.color.RainbowSoftColorRainbowTransparencyFunctionUnAdjusted(Math.abs( ColorsFactor ), sliderValue, BrightnessMultiplyer, Gradations, OpacityBefore, OpacityAfter); //26th Square In SimpleDiagnosticsClass.java		rgb = color.rgb;
		argb = color.argb;
		fxColor = color.ToFXColor();
		return color;
	}
	public Object RainbowCheapFractalVaryated(double ColorsFactor, double LocationOfStillMovement, double LocationOfColorMovement, double x, double y, double RepeatFactor, double DimWidth, Color[] FXcolorArray, boolean Reversed )//Same As Above Except With Any Amount Of Custom Colors And Not All Accouchriments As Below
	{
		originalFormulaValue = - ( y + 246 * LocationOfColorMovement ) - ( x + 24 * LocationOfColorMovement - 2 * DimWidth ) * Math.pow(LocationOfColorMovement , 1.20) / ( y + 0.5 );
		if ( LocationOfStillMovement == 0 )//Above Provides NonAligned RepeatFactor/ColorsLength != 1 For Shrinked[>1] And Abridged Rainbow[<1]
			sliderValue = SliderFormulateJustMovingColors( ColorsFactor, originalFormulaValue, LocationOfColorMovement, RepeatFactor );
		else
			if ( LocationOfColorMovement == 0)
				sliderValue = SliderFormulateSlidingTransitionsSameColors( ColorsFactor, originalFormulaValue, LocationOfStillMovement, RepeatFactor );
			else
				sliderValue = SliderFormulateDoubleSliding( ColorsFactor, originalFormulaValue, LocationOfStillMovement, LocationOfColorMovement, RepeatFactor );
		if (Reversed)
			this.color.RainbowSoftCustomColorFunction(Math.abs( ColorsFactor ), sliderValue, CustomColorsReverser(FXcolorArray)); //
		else
			this.color.RainbowSoftCustomColorFunction(Math.abs( ColorsFactor ), sliderValue, FXcolorArray); //
		rgb = color.rgb;
		argb = color.argb;
		fxColor = color.ToFXColor();
		return color;
	}
	public Object RainbowCheapFractalGradated(double ColorsFactor, double LocationOfStillMovement, double LocationOfColorMovement, double x, double y, double RepeatFactor, double DimWidth, Color[] FXcolorArray, boolean Reversed, double BrightnessMultiplyer, int Gradations, double OpacityBefore, double OpacityAfter, boolean Adjusted )//Same As Above Super Function For Any Custom Colors Clocks Which Is Last Rainbow Disk Function
	{
		originalFormulaValue = - ( y + 246 * LocationOfColorMovement ) - ( x + 24 * LocationOfColorMovement - 2 * DimWidth ) * Math.pow(LocationOfColorMovement , 1.20) / ( y + 0.5 );
		if ( LocationOfStillMovement == 0 )//Above Provides NonAligned RepeatFactor/ColorsLength != 1 For Shrinked[>1] And Abridged Rainbow[<1]
			sliderValue = SliderFormulateJustMovingColors( ColorsFactor, originalFormulaValue, LocationOfColorMovement, RepeatFactor );
		else
			if ( LocationOfColorMovement == 0)
				sliderValue = SliderFormulateSlidingTransitionsSameColors( ColorsFactor, originalFormulaValue, LocationOfStillMovement, RepeatFactor );
			else
				sliderValue = SliderFormulateDoubleSliding( ColorsFactor, originalFormulaValue, LocationOfStillMovement, LocationOfColorMovement, RepeatFactor );
		if ( Adjusted )
			if ( Reversed )
				this.color.RainbowSoftCustomColorTransparencyFunctionAdjusted(Math.abs( ColorsFactor ), sliderValue, BrightnessMultiplyer, Gradations, CustomColorsReverser(FXcolorArray), OpacityBefore, OpacityAfter); //25th Square In SimpleDiagnosticsClass.java
			else
				this.color.RainbowSoftCustomColorTransparencyFunctionAdjusted(Math.abs( ColorsFactor ), sliderValue, BrightnessMultiplyer, Gradations, FXcolorArray, OpacityBefore, OpacityAfter); //26th Square In SimpleDiagnosticsClass.java
		else
			if ( Reversed )
				this.color.RainbowSoftCustomColorTransparencyFunctionUnAdjusted(Math.abs( ColorsFactor ), sliderValue, BrightnessMultiplyer, Gradations, CustomColorsReverser(FXcolorArray), OpacityBefore, OpacityAfter); //25th Square In SimpleDiagnosticsClass.java
			else
				this.color.RainbowSoftCustomColorTransparencyFunctionUnAdjusted(Math.abs( ColorsFactor ), sliderValue, BrightnessMultiplyer, Gradations, FXcolorArray,  OpacityBefore, OpacityAfter); //26th Square In SimpleDiagnosticsClass.java
		rgb = color.rgb;
		argb = color.argb;
		fxColor = color.ToFXColor();
		return color;
	}

	//Build SimpleRainbowPattern2DDiagnosticsClass.java First With Color To Similar Tested In ???27th??? Square In In SimpleDiagnosticsClass.java 3 Horizontal x 9 Vertical Under 3 Bars
	//Formula String At End Of Complex Labeled Objects Instead Of Simple Labeled Objects
	//Formula Solver Which Reads Formula String And Processes Formula Into Location Within Color Interval Or OutPuts Same Location With Console Readout "Formula Not Found, No Formula Used -> Variable Sent Through Formula Processor Without Change."
	//Build ComplexRainbowPattern2DDiagnosticsClass.java Before Testing More Than 1 Formula
	public double SliderFormulateJustMovingColors( double ColorsLength, double FormulaValue, double LocationOfColorMovement, double RepeatLength )
	{//System.out.println("FormulaValue = " + FormulaValue);
		boolean negativeColorsLength = false, negativeRepeatLength = false;
		if ( ColorsLength < 0 )
		{
			negativeColorsLength = true;
			ColorsLength = Math.abs( ColorsLength );
		}
		if ( RepeatLength < 0 )
		{
			negativeRepeatLength = true;
			RepeatLength = Math.abs( RepeatLength );
		}
		if ( RepeatLength == ColorsLength )
		{//AFTER DIAGNOSTICS FINISHED COMPLETELY Don't Do This As It Won't Fix Anomoles; Ctrl-f And Replace Relevant " < " With " <= " Then " > " With " >= " Copy And Paste Back To Get Rid Of Pixel Artifacts If They Happen On fRateDivisor >~192
			if ( negativeRepeatLength && negativeColorsLength )
			{
				//FormulaValue = 0; //For Testing Specific SubFunction Only
				FormulaValue = FormulaValue + LocationOfColorMovement;
				while ( RepeatLength - FormulaValue < 0 )
					FormulaValue = FormulaValue - RepeatLength;
				while ( RepeatLength - FormulaValue > RepeatLength )
					FormulaValue = FormulaValue + RepeatLength;
				if ( FormulaValue - RepeatLength < -RepeatLength / 2 )
					FormulaValue = FormulaValue + 2 * RepeatLength; 
				return  FormulaValue - RepeatLength;// */
			}
			else if ( negativeColorsLength )
			{
				//FormulaValue = 0; //For Testing Specific SubFunction Only
				FormulaValue = FormulaValue + LocationOfColorMovement;
				while ( RepeatLength - FormulaValue < 0 )
					FormulaValue = FormulaValue - RepeatLength;
				while ( RepeatLength - FormulaValue > RepeatLength )
					FormulaValue = FormulaValue + RepeatLength;
				//System.out.println("RepeatLength - FormulaValue: " + ( RepeatLength - FormulaValue ) );
				return  RepeatLength - FormulaValue;// */
			}
			else if ( negativeRepeatLength )
			{
				//FormulaValue = 0; //For Testing Specific SubFunction Only
				FormulaValue = FormulaValue + LocationOfColorMovement;
				while ( FormulaValue < 0 )
					FormulaValue = FormulaValue + RepeatLength;
				while ( FormulaValue > RepeatLength )
					FormulaValue = FormulaValue - RepeatLength;
				if ( FormulaValue > RepeatLength / 2 )
				{
					FormulaValue = FormulaValue + 3 * RepeatLength / 2;
					return FormulaValue - RepeatLength;
				}
				return -FormulaValue;// */
			}
			else
			{
				//FormulaValue = 0; //For Testing Specific SubFunction Only
				FormulaValue = FormulaValue + LocationOfColorMovement;
				while ( FormulaValue < 0 )
					FormulaValue = FormulaValue + RepeatLength;
				while ( FormulaValue > RepeatLength )
					FormulaValue = FormulaValue - RepeatLength;// */
			}
		}
		else if ( RepeatLength < ColorsLength )	
		{//NM Replace With The Code Below Below Function??? Work On Simplifying: FormulaValue = ColorsLength - FormulaValue;
			if ( negativeRepeatLength && negativeColorsLength )
			{
				//FormulaValue = 0; //For Testing Specific SubFunction Only
				numberOfTransitions = 0;//ColorsLength / ( 2 * RepeatLength );//0;
				FormulaValue = - FormulaValue * RepeatLength / ColorsLength;
				while ( FormulaValue <= 0 )
					FormulaValue = FormulaValue + RepeatLength;
				while ( FormulaValue >= RepeatLength )
					FormulaValue = FormulaValue - RepeatLength;
				LocationOfColorMovement = - LocationOfColorMovement * RepeatLength / ColorsLength;
				while ( LocationOfColorMovement < 0 )
				{
					LocationOfColorMovement = LocationOfColorMovement + RepeatLength;
					numberOfTransitions++;//Comment Out Both Of These To Not Transition To A Different Color
				}
				while ( LocationOfColorMovement > RepeatLength )
				{
					LocationOfColorMovement = LocationOfColorMovement - RepeatLength;
					numberOfTransitions--;//Comment Out Both Of These To Not Transition To A Different Color
				}
				FormulaValue = FormulaValue - LocationOfColorMovement + numberOfTransitions * RepeatLength;
				while ( FormulaValue <= 0 )
					FormulaValue = FormulaValue + ColorsLength;
				while ( FormulaValue >= ColorsLength )//CHECK FOR THIS KIND OF INSTANCE IF THERE IS A SINGULAR LINE ANOMOLY
					FormulaValue = FormulaValue - ColorsLength;// */
				FormulaValue = ColorsLength - FormulaValue;//Critical Change
				while ( ColorsLength - FormulaValue < 0 )
					FormulaValue = FormulaValue - ColorsLength;
				while ( ColorsLength - FormulaValue > ColorsLength )
					FormulaValue = FormulaValue + ColorsLength;
				if ( FormulaValue - ColorsLength < -ColorsLength / 2 )
					FormulaValue = FormulaValue + 2 * ColorsLength;
				return  FormulaValue - ColorsLength;// */
			}
			else if ( negativeColorsLength )
			{
				//FormulaValue = 0; //For Testing Specific SubFunction Only
				numberOfTransitions = 0;//ColorsLength / ( 2 * RepeatLength );//0;
				FormulaValue = - FormulaValue * RepeatLength / ColorsLength;
				while ( FormulaValue <= 0 )
					FormulaValue = FormulaValue + RepeatLength;
				while ( FormulaValue >= RepeatLength )
					FormulaValue = FormulaValue - RepeatLength;
				LocationOfColorMovement = - LocationOfColorMovement * RepeatLength / ColorsLength;
				while ( LocationOfColorMovement < 0 )
				{
					LocationOfColorMovement = LocationOfColorMovement + RepeatLength;
					numberOfTransitions++;//Comment Out Both Of These To Not Transition To A Different Color
				}
				while ( LocationOfColorMovement > RepeatLength )
				{
					LocationOfColorMovement = LocationOfColorMovement - RepeatLength;
					numberOfTransitions--;//Comment Out Both Of These To Not Transition To A Different Color
				}
				FormulaValue = FormulaValue - LocationOfColorMovement + numberOfTransitions * RepeatLength;
				while ( FormulaValue <= 0 )
					FormulaValue = FormulaValue + ColorsLength;
				while ( FormulaValue >= ColorsLength )//CHECK FOR THIS KIND OF INSTANCE IF THERE IS A SINGULAR LINE ANOMOLY
					FormulaValue = FormulaValue - ColorsLength;// */
			}
			else if ( negativeRepeatLength )
			{
				//FormulaValue = 0; //For Testing Specific SubFunction Only
				numberOfTransitions = 0;//ColorsLength / ( 2 * RepeatLength );//0;
				FormulaValue = FormulaValue * RepeatLength / ColorsLength;
				while ( FormulaValue <= 0 )
					FormulaValue = FormulaValue + RepeatLength;
				while ( FormulaValue >= RepeatLength )
					FormulaValue = FormulaValue - RepeatLength;
				LocationOfColorMovement = - LocationOfColorMovement * RepeatLength / ColorsLength;
				while ( LocationOfColorMovement < 0 )
				{
					LocationOfColorMovement = LocationOfColorMovement + RepeatLength;
					numberOfTransitions++;//Comment Out Both Of These To Not Transition To A Different Color
				}
				while ( LocationOfColorMovement > RepeatLength )
				{
					LocationOfColorMovement = LocationOfColorMovement - RepeatLength;
					numberOfTransitions--;//Comment Out Both Of These To Not Transition To A Different Color
				}
				FormulaValue = FormulaValue - LocationOfColorMovement + numberOfTransitions * RepeatLength;
				FormulaValue = FormulaValue - ColorsLength / 2;//New
				while ( FormulaValue <= 0 )
					FormulaValue = FormulaValue + ColorsLength;
				while ( FormulaValue >= ColorsLength )//CHECK FOR THIS KIND OF INSTANCE IF THERE IS A SINGULAR LINE ANOMOLY
					FormulaValue = FormulaValue - ColorsLength;// */
				if ( FormulaValue >= ColorsLength / 2 )
					return  FormulaValue + ColorsLength / 2;
				else
					return - FormulaValue - ColorsLength / 2;
				//return 99;// */ Potential Problem
			}
			else
			{
				//FormulaValue = 0; //For Testing Specific SubFunction Only
				numberOfTransitions = 0;//ColorsLength / ( 2 * RepeatLength );//0;
				FormulaValue = FormulaValue * RepeatLength / ColorsLength;
				while ( FormulaValue <= 0 )
					FormulaValue = FormulaValue + RepeatLength;
				while ( FormulaValue >= RepeatLength )
					FormulaValue = FormulaValue - RepeatLength;
				LocationOfColorMovement = - LocationOfColorMovement * RepeatLength / ColorsLength;
				while ( LocationOfColorMovement < 0 )
				{
					LocationOfColorMovement = LocationOfColorMovement + RepeatLength;
					numberOfTransitions++;//Comment Out Both Of These To Not Transition To A Different Color
				}
				while ( LocationOfColorMovement > RepeatLength )
				{
					LocationOfColorMovement = LocationOfColorMovement - RepeatLength;
					numberOfTransitions--;//Comment Out Both Of These To Not Transition To A Different Color
				}
				FormulaValue = FormulaValue - LocationOfColorMovement + numberOfTransitions * RepeatLength;
				while ( FormulaValue <= 0 )
					FormulaValue = FormulaValue + ColorsLength;
				while ( FormulaValue >= ColorsLength )//CHECK FOR THIS KIND OF INSTANCE IF THERE IS A SINGULAR LINE ANOMOLY
					FormulaValue = FormulaValue - ColorsLength;// */
			}
		}
		else
		{
			if ( negativeRepeatLength && negativeColorsLength )
			{
				//FormulaValue = 0; //For Testing Specific SubFunction Only
				numberOfTransitions = 0;//- ( RepeatLength - 2 * ColorsLength ) / ColorsLength;
				FormulaValue = - FormulaValue + ( RepeatLength + ColorsLength ) / 2 + RepeatLength / ColorsLength * RepeatLength / 2;
				while ( FormulaValue <= 0 )
					FormulaValue = FormulaValue + RepeatLength;
				while ( FormulaValue >= ( RepeatLength + ColorsLength ) / 2 )
					FormulaValue = FormulaValue - RepeatLength;
				LocationOfColorMovement = - LocationOfColorMovement + ( RepeatLength + ColorsLength ) / 2 + RepeatLength / ColorsLength * RepeatLength / 2;
				while ( LocationOfColorMovement <= 0 )
				{
					LocationOfColorMovement = LocationOfColorMovement + RepeatLength;
					numberOfTransitions++;//Comment Out Both Of These To Not Transition To A Different Color
				}
				while ( LocationOfColorMovement >= ( RepeatLength + ColorsLength ) / 2 )//( RepeatLength + ColorsLength ) / 2 )
				{
					LocationOfColorMovement = LocationOfColorMovement - RepeatLength;
					numberOfTransitions--;//Comment Out Both Of These To Not Transition To A Different Color
				}
				FormulaValue = FormulaValue - LocationOfColorMovement + numberOfTransitions * RepeatLength + ( RepeatLength + ColorsLength ) / 2;//Leave For Desyncronization !TEST?
				while ( FormulaValue <= 0 )
					FormulaValue = FormulaValue + RepeatLength;
				while ( FormulaValue >= ( RepeatLength + ColorsLength ) / 2 )
					FormulaValue = FormulaValue - RepeatLength;// */
				FormulaValue = RepeatLength - FormulaValue;//Critical Change
				while ( RepeatLength - FormulaValue < 0 )
					FormulaValue = FormulaValue - RepeatLength;
				while ( RepeatLength - FormulaValue > RepeatLength )
					FormulaValue = FormulaValue + RepeatLength;
				if ( FormulaValue - RepeatLength < -RepeatLength / 2 )
					FormulaValue = FormulaValue + 2 * RepeatLength; 
				return FormulaValue - RepeatLength;// ( - )// */
			}//Work On Below
			else if ( negativeColorsLength )
			{
				//FormulaValue = 0; //For Testing Specific SubFunction Only
				numberOfTransitions = 0;//- ( RepeatLength - 2 * ColorsLength ) / ColorsLength;
				FormulaValue = - FormulaValue + ( RepeatLength + ColorsLength ) / 2 + RepeatLength / ColorsLength * RepeatLength / 2;
				while ( FormulaValue <= 0 )
					FormulaValue = FormulaValue + RepeatLength;
				while ( FormulaValue >= ( RepeatLength + ColorsLength ) / 2 )
					FormulaValue = FormulaValue - RepeatLength;
				LocationOfColorMovement = - LocationOfColorMovement + ( RepeatLength + ColorsLength ) / 2 + RepeatLength / ColorsLength * RepeatLength / 2;
				while ( LocationOfColorMovement <= 0 )
				{
					LocationOfColorMovement = LocationOfColorMovement + RepeatLength;
					numberOfTransitions++;//Comment Out Both Of These To Not Transition To A Different Color
				}
				while ( LocationOfColorMovement >= ( RepeatLength + ColorsLength ) / 2 )//( RepeatLength + ColorsLength ) / 2 )
				{
					LocationOfColorMovement = LocationOfColorMovement - RepeatLength;
					numberOfTransitions--;//Comment Out Both Of These To Not Transition To A Different Color
				}
				FormulaValue = FormulaValue - LocationOfColorMovement + numberOfTransitions * RepeatLength + ( RepeatLength + ColorsLength ) / 2;//Leave For Desyncronization !TEST?
				while ( FormulaValue <= 0 )
					FormulaValue = FormulaValue + RepeatLength;
				while ( FormulaValue >= ( RepeatLength + ColorsLength ) / 2 )
					FormulaValue = FormulaValue - RepeatLength;// */
			}
			else if ( negativeRepeatLength )
			{
				//FormulaValue = 0; //For Testing Specific SubFunction Only
				numberOfTransitions = 0;//- ( RepeatLength - 2 * ColorsLength ) / ColorsLength;
				FormulaValue = FormulaValue + ( RepeatLength + ColorsLength ) / 2 + RepeatLength / ColorsLength * RepeatLength / 2;
				while ( FormulaValue <= 0 )
					FormulaValue = FormulaValue + RepeatLength;
				while ( FormulaValue >= ( RepeatLength + ColorsLength ) / 2 )
					FormulaValue = FormulaValue - RepeatLength;
				LocationOfColorMovement = - LocationOfColorMovement + ( RepeatLength + ColorsLength ) / 2 + RepeatLength / ColorsLength * RepeatLength / 2;
				while ( LocationOfColorMovement <= 0 )
				{
					LocationOfColorMovement = LocationOfColorMovement + RepeatLength;
					numberOfTransitions++;//Comment Out Both Of These To Not Transition To A Different Color
				}
				while ( LocationOfColorMovement >= ( RepeatLength + ColorsLength ) / 2 )//( RepeatLength + ColorsLength ) / 2 )
				{
					LocationOfColorMovement = LocationOfColorMovement - RepeatLength;
					numberOfTransitions--;//Comment Out Both Of These To Not Transition To A Different Color
				}
				FormulaValue = FormulaValue - LocationOfColorMovement + numberOfTransitions * RepeatLength + ( RepeatLength + ColorsLength ) / 2;//Leave For Desyncronization !TEST?
				while ( FormulaValue <= 0 )
					FormulaValue = FormulaValue + RepeatLength;
				while ( FormulaValue >= ( RepeatLength + ColorsLength ) / 2 )
					FormulaValue = FormulaValue - RepeatLength;// */
				//Bad FormulaValue = - FormulaValue / RepeatLength;//Critical Change
				//Put In All 3 Places Maybe: FomulaValue = Formula Value + ColorsLength / 2 But That Happens At The Top
				FormulaValue = FormulaValue - ColorsLength / 2;
				while ( FormulaValue < 0 )
					FormulaValue = FormulaValue + RepeatLength;
				while ( FormulaValue > RepeatLength )
					FormulaValue = FormulaValue - RepeatLength;
				if ( FormulaValue > RepeatLength / 2 )
				{
					FormulaValue = FormulaValue + 3 * RepeatLength / 2;
					return  FormulaValue - RepeatLength;
				}
				return -FormulaValue;// */
			}
			else
			{
				//FormulaValue = 0; //For Testing Specific SubFunction Only
				numberOfTransitions = 0;//- ( RepeatLength - 2 * ColorsLength ) / ColorsLength;
				FormulaValue = FormulaValue + ( RepeatLength + ColorsLength ) / 2 + RepeatLength / ColorsLength * RepeatLength / 2;
				while ( FormulaValue <= 0 )
					FormulaValue = FormulaValue + RepeatLength;
				while ( FormulaValue >= ( RepeatLength + ColorsLength ) / 2 )
					FormulaValue = FormulaValue - RepeatLength;
				LocationOfColorMovement = - LocationOfColorMovement + ( RepeatLength + ColorsLength ) / 2 + RepeatLength / ColorsLength * RepeatLength / 2;
				while ( LocationOfColorMovement <= 0 )
				{
					LocationOfColorMovement = LocationOfColorMovement + RepeatLength;
					numberOfTransitions++;//Comment Out Both Of These To Not Transition To A Different Color
				}
				while ( LocationOfColorMovement >= ( RepeatLength + ColorsLength ) / 2 )//( RepeatLength + ColorsLength ) / 2 )
				{
					LocationOfColorMovement = LocationOfColorMovement - RepeatLength;
					numberOfTransitions--;//Comment Out Both Of These To Not Transition To A Different Color
				}
				FormulaValue = FormulaValue - LocationOfColorMovement + numberOfTransitions * RepeatLength + ( RepeatLength + ColorsLength ) / 2;//Leave For Desyncronization !TEST?
				while ( FormulaValue <= 0 )
					FormulaValue = FormulaValue + RepeatLength;
				while ( FormulaValue >= ( RepeatLength + ColorsLength ) / 2 )
					FormulaValue = FormulaValue - RepeatLength;// */
			}
		}
		return FormulaValue;
	}
	public double SliderFormulateSlidingTransitionsSameColors( double ColorsLength, double FormulaValue, double LocationOfStillMovement, double RepeatLength )
	{//System.out.println("FormulaValue = " + FormulaValue);
		boolean negativeColorsLength = false, negativeRepeatLength = false;
		if ( ColorsLength < 0 )
		{
			negativeColorsLength = true;
			ColorsLength = Math.abs( ColorsLength );
		}
		if ( RepeatLength < 0 )
		{
			negativeRepeatLength = true;
			RepeatLength = Math.abs( RepeatLength );
		}
		//FormulaValue = FormulaValue - LocationOfStillMovement; //And Get Rid Of Other LocationOfStillMovement In Slider Formulate For Spinning Same Colors
		if ( RepeatLength == ColorsLength )
		{//WORK ON ALL 9
			if ( negativeRepeatLength && negativeColorsLength )
			{
				//FormulaValue = 0; //For Testing Specific SubFunction Only
				numberOfTransitions = 0;//ColorsLength / ( 2 * RepeatLength );//0;
				FormulaValue = FormulaValue * RepeatLength / ColorsLength;
				while ( FormulaValue <= 0 )
					FormulaValue = FormulaValue + RepeatLength;
				while ( FormulaValue >= RepeatLength )
					FormulaValue = FormulaValue - RepeatLength;
				LocationOfStillMovement = - LocationOfStillMovement * RepeatLength / ColorsLength;
				while ( LocationOfStillMovement < 0 )
				{
					LocationOfStillMovement = LocationOfStillMovement + RepeatLength;
					numberOfTransitions++;//Comment Out Both Of These To Not Transition To A Different Color
				}
				while ( LocationOfStillMovement > RepeatLength )
				{
					LocationOfStillMovement = LocationOfStillMovement - RepeatLength;
					numberOfTransitions--;//Comment Out Both Of These To Not Transition To A Different Color
				}
				if ( LocationOfStillMovement < FormulaValue )
					FormulaValue = FormulaValue - LocationOfStillMovement + ( numberOfTransitions + 1 ) * RepeatLength;
				else
					FormulaValue = FormulaValue + numberOfTransitions * RepeatLength;
				while ( FormulaValue <= 0 )
					FormulaValue = FormulaValue + ColorsLength;
				while ( FormulaValue >= ColorsLength )//CHECK FOR THIS KIND OF INSTANCE IF THERE IS A SINGULAR LINE ANOMOLY
					FormulaValue = FormulaValue - ColorsLength;// */
				while ( RepeatLength - FormulaValue < 0 )
					FormulaValue = FormulaValue - RepeatLength;
				while ( RepeatLength - FormulaValue > RepeatLength )
					FormulaValue = FormulaValue + RepeatLength;
				if ( FormulaValue - RepeatLength < -RepeatLength / 2 )
					FormulaValue = FormulaValue + 2 * RepeatLength; 
				return  FormulaValue - RepeatLength;// */
			}
			else if ( negativeColorsLength )
			{
				//FormulaValue = 0; //For Testing Specific SubFunction Only
				numberOfTransitions = 0;//ColorsLength / ( 2 * RepeatLength );//0;
				FormulaValue = FormulaValue * RepeatLength / ColorsLength;
				while ( FormulaValue <= 0 )
					FormulaValue = FormulaValue + RepeatLength;
				while ( FormulaValue >= RepeatLength )
					FormulaValue = FormulaValue - RepeatLength;
				LocationOfStillMovement = - LocationOfStillMovement * RepeatLength / ColorsLength;
				while ( LocationOfStillMovement < 0 )
				{
					LocationOfStillMovement = LocationOfStillMovement + RepeatLength;
					numberOfTransitions++;//Comment Out Both Of These To Not Transition To A Different Color
				}
				while ( LocationOfStillMovement > RepeatLength )
				{
					LocationOfStillMovement = LocationOfStillMovement - RepeatLength;
					numberOfTransitions--;//Comment Out Both Of These To Not Transition To A Different Color
				}
				if ( LocationOfStillMovement < FormulaValue )
					FormulaValue = FormulaValue - LocationOfStillMovement + ( numberOfTransitions + 1 ) * RepeatLength;
				else
					FormulaValue = FormulaValue + numberOfTransitions * RepeatLength;
				while ( FormulaValue <= 0 )
					FormulaValue = FormulaValue + ColorsLength;
				while ( FormulaValue >= ColorsLength )//CHECK FOR THIS KIND OF INSTANCE IF THERE IS A SINGULAR LINE ANOMOLY
					FormulaValue = FormulaValue - ColorsLength;// */
				while ( RepeatLength - FormulaValue < 0 )
					FormulaValue = FormulaValue - RepeatLength;
				while ( RepeatLength - FormulaValue > RepeatLength )
					FormulaValue = FormulaValue + RepeatLength;
				//System.out.println("RepeatLength - FormulaValue: " + ( RepeatLength - FormulaValue ) );
				return  RepeatLength - FormulaValue;// */
			}
			else if ( negativeRepeatLength )
			{
				//FormulaValue = 0; //For Testing Specific SubFunction Only
				numberOfTransitions = 0;//ColorsLength / ( 2 * RepeatLength );//0;
				FormulaValue = FormulaValue * RepeatLength / ColorsLength;
				while ( FormulaValue <= 0 )
					FormulaValue = FormulaValue + RepeatLength;
				while ( FormulaValue >= RepeatLength )
					FormulaValue = FormulaValue - RepeatLength;
				LocationOfStillMovement = - LocationOfStillMovement * RepeatLength / ColorsLength;
				while ( LocationOfStillMovement < 0 )
				{
					LocationOfStillMovement = LocationOfStillMovement + RepeatLength;
					numberOfTransitions++;//Comment Out Both Of These To Not Transition To A Different Color
				}
				while ( LocationOfStillMovement > RepeatLength )
				{
					LocationOfStillMovement = LocationOfStillMovement - RepeatLength;
					numberOfTransitions--;//Comment Out Both Of These To Not Transition To A Different Color
				}
				if ( LocationOfStillMovement < FormulaValue )
					FormulaValue = FormulaValue - LocationOfStillMovement + ( numberOfTransitions + 1 ) * RepeatLength;
				else
					FormulaValue = FormulaValue + numberOfTransitions * RepeatLength;
				while ( FormulaValue <= 0 )
					FormulaValue = FormulaValue + ColorsLength;
				while ( FormulaValue >= ColorsLength )//CHECK FOR THIS KIND OF INSTANCE IF THERE IS A SINGULAR LINE ANOMOLY
					FormulaValue = FormulaValue - ColorsLength;// */
				if ( FormulaValue > RepeatLength / 2 )
				{
					FormulaValue = FormulaValue + 3 * RepeatLength / 2;
					return FormulaValue - RepeatLength;
				}
				return -FormulaValue;// */
			}
			else
			{
				//FormulaValue = 0; //For Testing Specific SubFunction Only
				numberOfTransitions = 0;//ColorsLength / ( 2 * RepeatLength );//0;
				FormulaValue = FormulaValue * RepeatLength / ColorsLength;
				while ( FormulaValue <= 0 )
					FormulaValue = FormulaValue + RepeatLength;
				while ( FormulaValue >= RepeatLength )
					FormulaValue = FormulaValue - RepeatLength;
				LocationOfStillMovement = - LocationOfStillMovement * RepeatLength / ColorsLength;
				while ( LocationOfStillMovement < 0 )
				{
					LocationOfStillMovement = LocationOfStillMovement + RepeatLength;
					numberOfTransitions++;//Comment Out Both Of These To Not Transition To A Different Color
				}
				while ( LocationOfStillMovement > RepeatLength )
				{
					LocationOfStillMovement = LocationOfStillMovement - RepeatLength;
					numberOfTransitions--;//Comment Out Both Of These To Not Transition To A Different Color
				}
				if ( LocationOfStillMovement < FormulaValue )
					FormulaValue = FormulaValue - LocationOfStillMovement + ( numberOfTransitions + 1 ) * RepeatLength;
				else
					FormulaValue = FormulaValue + numberOfTransitions * RepeatLength;
				while ( FormulaValue <= 0 )
					FormulaValue = FormulaValue + ColorsLength;
				while ( FormulaValue >= ColorsLength )//CHECK FOR THIS KIND OF INSTANCE IF THERE IS A SINGULAR LINE ANOMOLY
					FormulaValue = FormulaValue - ColorsLength;// */
				/*while ( LocationOfStillMovement < 0 )
					LocationOfStillMovement = LocationOfStillMovement + RepeatLength;
				while ( LocationOfStillMovement > RepeatLength )
					LocationOfStillMovement = LocationOfStillMovement - RepeatLength;
				if ( FormulaValue > LocationOfStillMovement )
					FormulaValue = FormulaValue - LocationOfStillMovement;//Uncomment For Cool Error */ 
				/*while ( FormulaValue < 0 )
					FormulaValue = FormulaValue + RepeatLength;
				while ( FormulaValue > RepeatLength )
					FormulaValue = FormulaValue - RepeatLength;// */
			}
		}
		else if ( RepeatLength < ColorsLength )	
		{
			if ( negativeRepeatLength && negativeColorsLength )
			{//WORK ON ALL 9
				//FormulaValue = 0; //For Testing Specific SubFunction Only
				numberOfTransitions = 0;//ColorsLength / ( 2 * RepeatLength );//0;
				FormulaValue = - FormulaValue * RepeatLength / ColorsLength;
				while ( FormulaValue <= 0 )
					FormulaValue = FormulaValue + RepeatLength;
				while ( FormulaValue >= RepeatLength )
					FormulaValue = FormulaValue - RepeatLength;
				LocationOfStillMovement = - LocationOfStillMovement * RepeatLength / ColorsLength;
				while ( LocationOfStillMovement < 0 )
				{
					LocationOfStillMovement = LocationOfStillMovement + RepeatLength;
					numberOfTransitions++;//Comment Out Both Of These To Not Transition To A Different Color
				}
				while ( LocationOfStillMovement > RepeatLength )
				{
					LocationOfStillMovement = LocationOfStillMovement - RepeatLength;
					numberOfTransitions--;//Comment Out Both Of These To Not Transition To A Different Color
				}
				if ( LocationOfStillMovement < FormulaValue )
					FormulaValue = FormulaValue - LocationOfStillMovement + ( numberOfTransitions + 1 ) * RepeatLength;
				else
					FormulaValue = FormulaValue + numberOfTransitions * RepeatLength;
				while ( FormulaValue <= 0 )
					FormulaValue = FormulaValue + ColorsLength;
				while ( FormulaValue >= ColorsLength )//CHECK FOR THIS KIND OF INSTANCE IF THERE IS A SINGULAR LINE ANOMOLY
					FormulaValue = FormulaValue - ColorsLength;// */
				//FormulaValue = ColorsLength - FormulaValue;//Critical Change
				FormulaValue = FormulaValue - ColorsLength / 2;//New
				while ( ColorsLength - FormulaValue < 0 )
					FormulaValue = FormulaValue - ColorsLength;
				while ( ColorsLength - FormulaValue > ColorsLength )
					FormulaValue = FormulaValue + ColorsLength;
				if ( FormulaValue - ColorsLength < -ColorsLength / 2 )
					FormulaValue = FormulaValue + 2 * ColorsLength; 
				return  FormulaValue - ColorsLength;// */
			}
			else if ( negativeColorsLength )
			{
				//FormulaValue = 0; //For Testing Specific SubFunction Only
				numberOfTransitions = 0;//ColorsLength / ( 2 * RepeatLength );//0;
				FormulaValue = - FormulaValue * RepeatLength / ColorsLength;
				while ( FormulaValue <= 0 )
					FormulaValue = FormulaValue + RepeatLength;
				while ( FormulaValue >= RepeatLength )
					FormulaValue = FormulaValue - RepeatLength;
				LocationOfStillMovement = - LocationOfStillMovement * RepeatLength / ColorsLength;
				while ( LocationOfStillMovement < 0 )
				{
					LocationOfStillMovement = LocationOfStillMovement + RepeatLength;
					numberOfTransitions++;//Comment Out Both Of These To Not Transition To A Different Color
				}
				while ( LocationOfStillMovement > RepeatLength )
				{
					LocationOfStillMovement = LocationOfStillMovement - RepeatLength;
					numberOfTransitions--;//Comment Out Both Of These To Not Transition To A Different Color
				}
				if ( LocationOfStillMovement < FormulaValue )
					FormulaValue = FormulaValue - LocationOfStillMovement + ( numberOfTransitions + 1 ) * RepeatLength;

				else
					FormulaValue = FormulaValue + numberOfTransitions * RepeatLength;
				while ( FormulaValue <= 0 )
					FormulaValue = FormulaValue + ColorsLength;
				while ( FormulaValue >= ColorsLength )//CHECK FOR THIS KIND OF INSTANCE IF THERE IS A SINGULAR LINE ANOMOLY
					FormulaValue = FormulaValue - ColorsLength;// */
			}
			else if ( negativeRepeatLength )
			{
				//FormulaValue = 0; //For Testing Specific SubFunction Only
				numberOfTransitions = 0;//ColorsLength / ( 2 * RepeatLength );//0;
				FormulaValue = FormulaValue * RepeatLength / ColorsLength;
				while ( FormulaValue <= 0 )
					FormulaValue = FormulaValue + RepeatLength;
				while ( FormulaValue >= RepeatLength )
					FormulaValue = FormulaValue - RepeatLength;
				LocationOfStillMovement = - LocationOfStillMovement * RepeatLength / ColorsLength;
				while ( LocationOfStillMovement < 0 )
				{
					LocationOfStillMovement = LocationOfStillMovement + RepeatLength;
					numberOfTransitions++;//Comment Out Both Of These To Not Transition To A Different Color
				}
				while ( LocationOfStillMovement > RepeatLength )
				{
					LocationOfStillMovement = LocationOfStillMovement - RepeatLength;
					numberOfTransitions--;//Comment Out Both Of These To Not Transition To A Different Color
				}
				if ( LocationOfStillMovement < FormulaValue )
					FormulaValue = FormulaValue - LocationOfStillMovement + ( numberOfTransitions + 1 ) * RepeatLength;
				else
					FormulaValue = FormulaValue + numberOfTransitions * RepeatLength;
				while ( FormulaValue <= 0 )
					FormulaValue = FormulaValue + ColorsLength;
				while ( FormulaValue >= ColorsLength )//CHECK FOR THIS KIND OF INSTANCE IF THERE IS A SINGULAR LINE ANOMOLY
					FormulaValue = FormulaValue - ColorsLength;// */
				//Bad FormulaValue = - FormulaValue / RepeatLength;//Critical Change
				while ( FormulaValue < 0 )
					FormulaValue = FormulaValue + ColorsLength;
				while ( FormulaValue > ColorsLength )
					FormulaValue = FormulaValue - ColorsLength;
				if ( FormulaValue >= ColorsLength / 2 )
					return  FormulaValue + ColorsLength / 2;
				else
					return - FormulaValue - ColorsLength / 2;// */
			}
			else
			{//CHECK THE LINE BELOW TO SEE IF THIS WORKS FOR ASYNCRONOUSLY IMPROPERLY UNFACTORABLE SETTINGS OF RepeatLength And ColorsLength
				//FormulaValue = 0; //For Testing Specific SubFunction Only
				numberOfTransitions = 0;//ColorsLength / ( 2 * RepeatLength );//0;
				FormulaValue = FormulaValue * RepeatLength / ColorsLength;
				while ( FormulaValue <= 0 )
					FormulaValue = FormulaValue + RepeatLength;
				while ( FormulaValue >= RepeatLength )
					FormulaValue = FormulaValue - RepeatLength;
				LocationOfStillMovement = - LocationOfStillMovement * RepeatLength / ColorsLength;
				while ( LocationOfStillMovement < 0 )
				{
					LocationOfStillMovement = LocationOfStillMovement + RepeatLength;
					numberOfTransitions++;//Comment Out Both Of These To Not Transition To A Different Color
				}
				while ( LocationOfStillMovement > RepeatLength )
				{
					LocationOfStillMovement = LocationOfStillMovement - RepeatLength;
					numberOfTransitions--;//Comment Out Both Of These To Not Transition To A Different Color
				}
				if ( LocationOfStillMovement < FormulaValue )
					FormulaValue = FormulaValue - LocationOfStillMovement + ( numberOfTransitions + 1 ) * RepeatLength;
				else
					FormulaValue = FormulaValue + numberOfTransitions * RepeatLength;
				while ( FormulaValue <= 0 )
					FormulaValue = FormulaValue + ColorsLength;
				while ( FormulaValue >= ColorsLength )//CHECK FOR THIS KIND OF INSTANCE IF THERE IS A SINGULAR LINE ANOMOLY
					FormulaValue = FormulaValue - ColorsLength;// */
				//System.out.println("numberOfTransitions: " + numberOfTransitions);
				//return FormulaValue;
			}
		}
		else
		{//WORK ON ALL 9
			if ( negativeRepeatLength && negativeColorsLength )
			{
				//FormulaValue = 0; //For Testing Specific SubFunction Only
				numberOfTransitions = 0;//- ( RepeatLength - 2 * ColorsLength ) / ColorsLength;//0; //- 2 * ( RepeatLength / ColorsLength + 1 );//- ( 2 * ColorsLength ) / RepeatLength;//- ( 2 * ColorsLength ) / RepeatLength;
				FormulaValue = - FormulaValue + ( RepeatLength + ColorsLength ) / 2 + RepeatLength / ColorsLength * RepeatLength / 2;// + ( RepeatLength + ColorsLength ) / 2;//  ColorsLength / 2; // + RepeatLength
				while ( FormulaValue <= 0 )
					FormulaValue = FormulaValue + RepeatLength;
				while ( FormulaValue >= ( RepeatLength + ColorsLength ) / 2 )
					FormulaValue = FormulaValue - RepeatLength;
				//FormulaValue = FormulaValue + ( RepeatLength + ColorsLength ) / 2;
				LocationOfStillMovement = - LocationOfStillMovement + ( RepeatLength + ColorsLength ) / 2 + RepeatLength / ColorsLength * RepeatLength / 2;// + ( RepeatLength + ColorsLength ) / 2;// + RepeatLength / 2
				while ( LocationOfStillMovement <= 0 )
				{
					LocationOfStillMovement = LocationOfStillMovement + RepeatLength;
					numberOfTransitions++;//Comment Out Both Of These To Not Transition To A Different Color
				}
				while ( LocationOfStillMovement >= ( RepeatLength + ColorsLength ) / 2 )//( RepeatLength + ColorsLength ) / 2 )
				{
					LocationOfStillMovement = LocationOfStillMovement - RepeatLength;
					numberOfTransitions--;//Comment Out Both Of These To Not Transition To A Different Color
				}
				if ( LocationOfStillMovement <= FormulaValue )
					FormulaValue = FormulaValue - LocationOfStillMovement + ( numberOfTransitions + 1 ) * RepeatLength + ( RepeatLength + ColorsLength ) / 2;//Leave For Desyncronization !TEST?
				else
					FormulaValue = FormulaValue + numberOfTransitions * RepeatLength;//Leave For Desyncronization !TEST?
				while ( FormulaValue <= 0 )
					FormulaValue = FormulaValue + RepeatLength;
				while ( FormulaValue >= ( RepeatLength + ColorsLength ) / 2 )
					FormulaValue = FormulaValue - RepeatLength;// */
				FormulaValue = RepeatLength - FormulaValue;//Critical Change
				while ( RepeatLength - FormulaValue < 0 )
					FormulaValue = FormulaValue - RepeatLength;
				while ( RepeatLength - FormulaValue > RepeatLength )
					FormulaValue = FormulaValue + RepeatLength;
				if ( FormulaValue - RepeatLength < -RepeatLength / 2 )
					FormulaValue = FormulaValue + 2 * RepeatLength; 
				return RepeatLength - FormulaValue;// ( - )// */
			}
			else if ( negativeColorsLength )
			{
				//FormulaValue = 0; //For Testing Specific SubFunction Only
				numberOfTransitions = 0;//- ( RepeatLength - 2 * ColorsLength ) / ColorsLength;//0; //- 2 * ( RepeatLength / ColorsLength + 1 );//- ( 2 * ColorsLength ) / RepeatLength;//- ( 2 * ColorsLength ) / RepeatLength;
				FormulaValue = - FormulaValue + ( RepeatLength + ColorsLength ) / 2 + RepeatLength / ColorsLength * RepeatLength / 2;// + ( RepeatLength + ColorsLength ) / 2;//  ColorsLength / 2; // + RepeatLength
				while ( FormulaValue <= 0 )
					FormulaValue = FormulaValue + RepeatLength;
				while ( FormulaValue >= ( RepeatLength + ColorsLength ) / 2 )
					FormulaValue = FormulaValue - RepeatLength;
				//FormulaValue = FormulaValue + ( RepeatLength + ColorsLength ) / 2;
				LocationOfStillMovement = - LocationOfStillMovement + ( RepeatLength + ColorsLength ) / 2 + RepeatLength / ColorsLength * RepeatLength / 2;// + ( RepeatLength + ColorsLength ) / 2;// + RepeatLength / 2
				while ( LocationOfStillMovement <= 0 )
				{
					LocationOfStillMovement = LocationOfStillMovement + RepeatLength;
					numberOfTransitions++;//Comment Out Both Of These To Not Transition To A Different Color
				}
				while ( LocationOfStillMovement >= ( RepeatLength + ColorsLength ) / 2 )//( RepeatLength + ColorsLength ) / 2 )
				{
					LocationOfStillMovement = LocationOfStillMovement - RepeatLength;
					numberOfTransitions--;//Comment Out Both Of These To Not Transition To A Different Color
				}
				if ( LocationOfStillMovement <= FormulaValue )
					FormulaValue = FormulaValue - LocationOfStillMovement + ( numberOfTransitions + 1 ) * RepeatLength + ( RepeatLength + ColorsLength ) / 2;//Leave For Desyncronization !TEST?
				else
					FormulaValue = FormulaValue + numberOfTransitions * RepeatLength;//Leave For Desyncronization !TEST?
				while ( FormulaValue <= 0 )
					FormulaValue = FormulaValue + RepeatLength;
				while ( FormulaValue >= ( RepeatLength + ColorsLength ) / 2 )
					FormulaValue = FormulaValue - RepeatLength;// */
			}
			else if ( negativeRepeatLength )
			{
				//FormulaValue = 0; //For Testing Specific SubFunction Only
				numberOfTransitions = 0;//- ( RepeatLength - 2 * ColorsLength ) / ColorsLength;//0; //- 2 * ( RepeatLength / ColorsLength + 1 );//- ( 2 * ColorsLength ) / RepeatLength;//- ( 2 * ColorsLength ) / RepeatLength;
				FormulaValue = FormulaValue + ( RepeatLength + ColorsLength ) / 2 + RepeatLength / ColorsLength * RepeatLength / 2;// + ( RepeatLength + ColorsLength ) / 2;//  ColorsLength / 2; // + RepeatLength
				while ( FormulaValue <= 0 )
					FormulaValue = FormulaValue + RepeatLength;
				while ( FormulaValue >= ( RepeatLength + ColorsLength ) / 2 )
					FormulaValue = FormulaValue - RepeatLength;
				//FormulaValue = FormulaValue + ( RepeatLength + ColorsLength ) / 2;
				LocationOfStillMovement = - LocationOfStillMovement + ( RepeatLength + ColorsLength ) / 2 + RepeatLength / ColorsLength * RepeatLength / 2;// + ( RepeatLength + ColorsLength ) / 2;// + RepeatLength / 2
				while ( LocationOfStillMovement <= 0 )
				{
					LocationOfStillMovement = LocationOfStillMovement + RepeatLength;
					numberOfTransitions++;//Comment Out Both Of These To Not Transition To A Different Color
				}
				while ( LocationOfStillMovement >= ( RepeatLength + ColorsLength ) / 2 )//( RepeatLength + ColorsLength ) / 2 )
				{
					LocationOfStillMovement = LocationOfStillMovement - RepeatLength;
					numberOfTransitions--;//Comment Out Both Of These To Not Transition To A Different Color
				}
				if ( LocationOfStillMovement <= FormulaValue )
					FormulaValue = FormulaValue - LocationOfStillMovement + ( numberOfTransitions + 1 ) * RepeatLength + ( RepeatLength + ColorsLength ) / 2;//Leave For Desyncronization !TEST?
				else
					FormulaValue = FormulaValue + numberOfTransitions * RepeatLength;//Leave For Desyncronization !TEST?
				while ( FormulaValue <= 0 )
					FormulaValue = FormulaValue + RepeatLength;
				while ( FormulaValue >= ( RepeatLength + ColorsLength ) / 2 )
					FormulaValue = FormulaValue - RepeatLength;// */
				//Bad FormulaValue = - FormulaValue / RepeatLength;//Critical Change
				FormulaValue = FormulaValue - ColorsLength / 2;
				while ( FormulaValue < 0 )
					FormulaValue = FormulaValue + RepeatLength;
				while ( FormulaValue > RepeatLength )
					FormulaValue = FormulaValue - RepeatLength;
				if ( FormulaValue > RepeatLength / 2 )
				{
					FormulaValue = FormulaValue + 3 * RepeatLength / 2;
					return  FormulaValue - RepeatLength;
				}
				return -FormulaValue;// */
			}
			else
			{//CHECK THE LINE BELOW TO SEE IF THIS WORKS FOR ASYNCRONOUSLY IMPROPERLY UNFACTORABLE SETTINGS OF RepeatLength And ColorsLength
				//FormulaValue = 0; //For Testing Specific SubFunction Only
				numberOfTransitions = 0;//- ( RepeatLength - 2 * ColorsLength ) / ColorsLength;//0; //- 2 * ( RepeatLength / ColorsLength + 1 );//- ( 2 * ColorsLength ) / RepeatLength;//- ( 2 * ColorsLength ) / RepeatLength;
				FormulaValue = FormulaValue + ( RepeatLength + ColorsLength ) / 2 + RepeatLength / ColorsLength * RepeatLength / 2;// + ( RepeatLength + ColorsLength ) / 2;//  ColorsLength / 2; // + RepeatLength
				while ( FormulaValue <= 0 )
					FormulaValue = FormulaValue + RepeatLength;
				while ( FormulaValue >= ( RepeatLength + ColorsLength ) / 2 )
					FormulaValue = FormulaValue - RepeatLength;
				//FormulaValue = FormulaValue + ( RepeatLength + ColorsLength ) / 2;
				LocationOfStillMovement = - LocationOfStillMovement + ( RepeatLength + ColorsLength ) / 2 + RepeatLength / ColorsLength * RepeatLength / 2;// + ( RepeatLength + ColorsLength ) / 2;// + RepeatLength / 2
				while ( LocationOfStillMovement <= 0 )
				{
					LocationOfStillMovement = LocationOfStillMovement + RepeatLength;
					numberOfTransitions++;//Comment Out Both Of These To Not Transition To A Different Color
				}
				while ( LocationOfStillMovement >= ( RepeatLength + ColorsLength ) / 2 )//( RepeatLength + ColorsLength ) / 2 )
				{
					LocationOfStillMovement = LocationOfStillMovement - RepeatLength;
					numberOfTransitions--;//Comment Out Both Of These To Not Transition To A Different Color
				}
				if ( LocationOfStillMovement <= FormulaValue )
					FormulaValue = FormulaValue - LocationOfStillMovement + ( numberOfTransitions + 1 ) * RepeatLength + ( RepeatLength + ColorsLength ) / 2;//Leave For Desyncronization !TEST?//Possible Cause Of The Issue Cooment Out: + ( RepeatLength + ColorsLength ) / 2
				else
					FormulaValue = FormulaValue + numberOfTransitions * RepeatLength;//Leave For Desyncronization !TEST?
				while ( FormulaValue <= 0 )
					FormulaValue = FormulaValue + RepeatLength;
				while ( FormulaValue >= ( RepeatLength + ColorsLength ) / 2 )
					FormulaValue = FormulaValue - RepeatLength;// */
				//System.out.println("numberOfTransitions: " + numberOfTransitions);
			}
		}
		return FormulaValue;
	}
	public double SliderFormulateDoubleSliding( double ColorsLength, double FormulaValue, double LocationOfStillMovement, double LocationOfColorMovement, double RepeatLength )//Spinning In Terms Of Colors And Repeated Segments Spinning
	{//System.out.println("FormulaValue = " + FormulaValue);
		boolean negativeColorsLength = false, negativeRepeatLength = false;
		if ( ColorsLength < 0 )
		{
			negativeColorsLength = true;
			ColorsLength = Math.abs( ColorsLength );
		}
		if ( RepeatLength < 0 )
		{
			negativeRepeatLength = true;
			RepeatLength = Math.abs( RepeatLength );
		}
		FormulaValue = FormulaValue + LocationOfColorMovement;
		if ( RepeatLength == ColorsLength )
		{
			//FormulaValue = 0; //For Testing Specific SubFunction Only
			if ( negativeRepeatLength && negativeColorsLength )
			{
				numberOfTransitions = 0;//ColorsLength / ( 2 * RepeatLength );//0;
				FormulaValue = FormulaValue * RepeatLength / ColorsLength;
				while ( FormulaValue < 0 )
					FormulaValue = FormulaValue + RepeatLength;
				while ( FormulaValue > RepeatLength )
					FormulaValue = FormulaValue - RepeatLength;
				LocationOfStillMovement = - LocationOfStillMovement * RepeatLength / ColorsLength;
				while ( LocationOfStillMovement < 0 )
				{
					LocationOfStillMovement = LocationOfStillMovement + RepeatLength;
					numberOfTransitions++;//Comment Out Both Of These To Not Transition To A Different Color
				}
				while ( LocationOfStillMovement > RepeatLength )
				{
					LocationOfStillMovement = LocationOfStillMovement - RepeatLength;
					numberOfTransitions--;//Comment Out Both Of These To Not Transition To A Different Color
				}
				if ( LocationOfStillMovement < FormulaValue )
					FormulaValue = FormulaValue - LocationOfStillMovement + ( numberOfTransitions + 1 ) * RepeatLength;
				else
					FormulaValue = FormulaValue + numberOfTransitions * RepeatLength;
				while ( FormulaValue <= 0 )
					FormulaValue = FormulaValue + ColorsLength;
				while ( FormulaValue >= ColorsLength )
					FormulaValue = FormulaValue - ColorsLength;// */
				while ( RepeatLength - FormulaValue < 0 )
					FormulaValue = FormulaValue - RepeatLength;
				while ( RepeatLength - FormulaValue > RepeatLength )
					FormulaValue = FormulaValue + RepeatLength;
				if ( FormulaValue - RepeatLength < -RepeatLength / 2 )
					FormulaValue = FormulaValue + 2 * RepeatLength; 
				return  FormulaValue - RepeatLength;// */
			}
			else if ( negativeColorsLength )
			{
				//FormulaValue = 0; //For Testing Specific SubFunction Only
				numberOfTransitions = 0;//ColorsLength / ( 2 * RepeatLength );//0;
				FormulaValue = FormulaValue * RepeatLength / ColorsLength;
				while ( FormulaValue < 0 )
					FormulaValue = FormulaValue + RepeatLength;
				while ( FormulaValue > RepeatLength )
					FormulaValue = FormulaValue - RepeatLength;
				LocationOfStillMovement = - LocationOfStillMovement * RepeatLength / ColorsLength;
				while ( LocationOfStillMovement < 0 )
				{
					LocationOfStillMovement = LocationOfStillMovement + RepeatLength;
					numberOfTransitions++;//Comment Out Both Of These To Not Transition To A Different Color
				}
				while ( LocationOfStillMovement > RepeatLength )
				{
					LocationOfStillMovement = LocationOfStillMovement - RepeatLength;
					numberOfTransitions--;//Comment Out Both Of These To Not Transition To A Different Color
				}
				if ( LocationOfStillMovement < FormulaValue )
					FormulaValue = FormulaValue - LocationOfStillMovement + ( numberOfTransitions + 1 ) * RepeatLength;
				else
					FormulaValue = FormulaValue + numberOfTransitions * RepeatLength;
				while ( FormulaValue <= 0 )
					FormulaValue = FormulaValue + ColorsLength;
				while ( FormulaValue >= ColorsLength )
					FormulaValue = FormulaValue - ColorsLength;// */
				while ( RepeatLength - FormulaValue < 0 )
					FormulaValue = FormulaValue - RepeatLength;
				while ( RepeatLength - FormulaValue > RepeatLength )
					FormulaValue = FormulaValue + RepeatLength;
				//System.out.println("RepeatLength - FormulaValue: " + ( RepeatLength - FormulaValue ) );
				return  RepeatLength - FormulaValue;// */
			}
			else if ( negativeRepeatLength )
			{
				//FormulaValue = 0; //For Testing Specific SubFunction Only
				numberOfTransitions = 0;//ColorsLength / ( 2 * RepeatLength );//0;
				FormulaValue = FormulaValue * RepeatLength / ColorsLength;
				while ( FormulaValue < 0 )
					FormulaValue = FormulaValue + RepeatLength;
				while ( FormulaValue > RepeatLength )
					FormulaValue = FormulaValue - RepeatLength;
				LocationOfStillMovement = - LocationOfStillMovement * RepeatLength / ColorsLength;
				while ( LocationOfStillMovement < 0 )
				{
					LocationOfStillMovement = LocationOfStillMovement + RepeatLength;
					numberOfTransitions++;//Comment Out Both Of These To Not Transition To A Different Color
				}
				while ( LocationOfStillMovement > RepeatLength )
				{
					LocationOfStillMovement = LocationOfStillMovement - RepeatLength;
					numberOfTransitions--;//Comment Out Both Of These To Not Transition To A Different Color
				}
				if ( LocationOfStillMovement < FormulaValue )
					FormulaValue = FormulaValue - LocationOfStillMovement + ( numberOfTransitions + 1 ) * RepeatLength;
				else
					FormulaValue = FormulaValue + numberOfTransitions * RepeatLength;
				while ( FormulaValue <= 0 )
					FormulaValue = FormulaValue + ColorsLength;
				while ( FormulaValue >= ColorsLength )
					FormulaValue = FormulaValue - ColorsLength;// */
				if ( FormulaValue > RepeatLength / 2 )
				{
					FormulaValue = FormulaValue + 3 * RepeatLength / 2;
					return FormulaValue - RepeatLength;
				}
				return -FormulaValue;// */
			}
			else
			{
				//FormulaValue = 0; //For Testing Specific SubFunction Only
				numberOfTransitions = 0;//ColorsLength / ( 2 * RepeatLength );//0;
				FormulaValue = FormulaValue * RepeatLength / ColorsLength;
				while ( FormulaValue < 0 )
					FormulaValue = FormulaValue + RepeatLength;
				while ( FormulaValue > RepeatLength )
					FormulaValue = FormulaValue - RepeatLength;
				LocationOfStillMovement = - LocationOfStillMovement * RepeatLength / ColorsLength;
				while ( LocationOfStillMovement < 0 )
				{
					LocationOfStillMovement = LocationOfStillMovement + RepeatLength;
					numberOfTransitions++;//Comment Out Both Of These To Not Transition To A Different Color
				}
				while ( LocationOfStillMovement > RepeatLength )
				{
					LocationOfStillMovement = LocationOfStillMovement - RepeatLength;
					numberOfTransitions--;//Comment Out Both Of These To Not Transition To A Different Color
				}
				if ( LocationOfStillMovement < FormulaValue )
					FormulaValue = FormulaValue - LocationOfStillMovement + ( numberOfTransitions + 1 ) * RepeatLength;
				else
					FormulaValue = FormulaValue + numberOfTransitions * RepeatLength;
				while ( FormulaValue <= 0 )
					FormulaValue = FormulaValue + ColorsLength;
				while ( FormulaValue >= ColorsLength )
					FormulaValue = FormulaValue - ColorsLength;// */
				while ( LocationOfStillMovement < 0 )
					LocationOfStillMovement = LocationOfStillMovement + RepeatLength;
				while ( LocationOfStillMovement > RepeatLength )
					LocationOfStillMovement = LocationOfStillMovement - RepeatLength;
				if ( FormulaValue > LocationOfStillMovement )
					FormulaValue = FormulaValue - LocationOfStillMovement;
				while ( FormulaValue < 0 )
					FormulaValue = FormulaValue + RepeatLength;
				while ( FormulaValue > RepeatLength )
					FormulaValue = FormulaValue - RepeatLength;// */
			}
		}
		else if ( RepeatLength < ColorsLength )	
		{
			if ( negativeRepeatLength && negativeColorsLength )
			{//Perhaps Simplify ALL OF THESE -- -+ +- X On All 3
				//FormulaValue = 0; //For Testing Specific SubFunction Only
				numberOfTransitions = 0;//ColorsLength / ( 2 * RepeatLength );//0;
				FormulaValue = - FormulaValue * RepeatLength / ColorsLength;
				while ( FormulaValue < 0 )
					FormulaValue = FormulaValue + RepeatLength;
				while ( FormulaValue > RepeatLength )
					FormulaValue = FormulaValue - RepeatLength;
				LocationOfStillMovement = - LocationOfStillMovement * RepeatLength / ColorsLength;
				while ( LocationOfStillMovement < 0 )
				{
					LocationOfStillMovement = LocationOfStillMovement + RepeatLength;
					numberOfTransitions++;//Comment Out Both Of These To Not Transition To A Different Color
				}
				while ( LocationOfStillMovement > RepeatLength )
				{
					LocationOfStillMovement = LocationOfStillMovement - RepeatLength;
					numberOfTransitions--;//Comment Out Both Of These To Not Transition To A Different Color
				}
				if ( LocationOfStillMovement < FormulaValue )
					FormulaValue = FormulaValue - LocationOfStillMovement + ( numberOfTransitions + 1 ) * RepeatLength;
				else
					FormulaValue = FormulaValue + numberOfTransitions * RepeatLength;
				while ( FormulaValue <= 0 )
					FormulaValue = FormulaValue + ColorsLength;
				while ( FormulaValue >= ColorsLength )
					FormulaValue = FormulaValue - ColorsLength;// */
				FormulaValue = ColorsLength - FormulaValue;//Critical Change
				while ( ColorsLength - FormulaValue < 0 )
					FormulaValue = FormulaValue - ColorsLength;
				while ( ColorsLength - FormulaValue > ColorsLength )
					FormulaValue = FormulaValue + ColorsLength;
				if ( FormulaValue - ColorsLength < -ColorsLength / 2 )
					FormulaValue = FormulaValue + 2 * ColorsLength; 
				return  FormulaValue - ColorsLength;// */
			}
			else if ( negativeColorsLength )
			{
				//FormulaValue = 0; //For Testing Specific SubFunction Only
				numberOfTransitions = 0;//ColorsLength / ( 2 * RepeatLength );//0;
				FormulaValue = - FormulaValue * RepeatLength / ColorsLength;
				while ( FormulaValue < 0 )
					FormulaValue = FormulaValue + RepeatLength;
				while ( FormulaValue > RepeatLength )
					FormulaValue = FormulaValue - RepeatLength;
				LocationOfStillMovement = - LocationOfStillMovement * RepeatLength / ColorsLength;
				while ( LocationOfStillMovement < 0 )
				{
					LocationOfStillMovement = LocationOfStillMovement + RepeatLength;
					numberOfTransitions++;//Comment Out Both Of These To Not Transition To A Different Color
				}
				while ( LocationOfStillMovement > RepeatLength )
				{
					LocationOfStillMovement = LocationOfStillMovement - RepeatLength;
					numberOfTransitions--;//Comment Out Both Of These To Not Transition To A Different Color
				}
				if ( LocationOfStillMovement < FormulaValue )
					FormulaValue = FormulaValue - LocationOfStillMovement + ( numberOfTransitions + 1 ) * RepeatLength;
				else
					FormulaValue = FormulaValue + numberOfTransitions * RepeatLength;
				while ( FormulaValue <= 0 )
					FormulaValue = FormulaValue + ColorsLength;
				while ( FormulaValue >= ColorsLength )
					FormulaValue = FormulaValue - ColorsLength;// */
			}
			else if ( negativeRepeatLength )
			{
				//FormulaValue = 0; //For Testing Specific SubFunction Only
				numberOfTransitions = 0;//ColorsLength / ( 2 * RepeatLength );//0;
				FormulaValue = FormulaValue * RepeatLength / ColorsLength;
				while ( FormulaValue < 0 )
					FormulaValue = FormulaValue + RepeatLength;
				while ( FormulaValue > RepeatLength )
					FormulaValue = FormulaValue - RepeatLength;
				LocationOfStillMovement = - LocationOfStillMovement * RepeatLength / ColorsLength;
				while ( LocationOfStillMovement < 0 )
				{
					LocationOfStillMovement = LocationOfStillMovement + RepeatLength;
					numberOfTransitions++;//Comment Out Both Of These To Not Transition To A Different Color
				}
				while ( LocationOfStillMovement > RepeatLength )
				{
					LocationOfStillMovement = LocationOfStillMovement - RepeatLength;
					numberOfTransitions--;//Comment Out Both Of These To Not Transition To A Different Color
				}
				if ( LocationOfStillMovement < FormulaValue )
					FormulaValue = FormulaValue - LocationOfStillMovement + ( numberOfTransitions + 1 ) * RepeatLength;
				else
					FormulaValue = FormulaValue + numberOfTransitions * RepeatLength;
				while ( FormulaValue <= 0 )
					FormulaValue = FormulaValue + ColorsLength;
				while ( FormulaValue >= ColorsLength )
					FormulaValue = FormulaValue - ColorsLength;// */
				//FormulaValue = -FormulaValue / RepeatLength;//Critical Change
				FormulaValue = FormulaValue - ColorsLength / 2;//New
				if ( FormulaValue >= ColorsLength / 2 )
					return  FormulaValue + ColorsLength / 2;
				else
					return - FormulaValue - ColorsLength / 2;// */
			}
			else
			{
				//FormulaValue = 0; //For Testing Specific SubFunction Only
				numberOfTransitions = 0;//ColorsLength / ( 2 * RepeatLength );//0;
				FormulaValue = FormulaValue * RepeatLength / ColorsLength;
				while ( FormulaValue < 0 )
					FormulaValue = FormulaValue + RepeatLength;
				while ( FormulaValue > RepeatLength )
					FormulaValue = FormulaValue - RepeatLength;
				LocationOfStillMovement = - LocationOfStillMovement * RepeatLength / ColorsLength;
				while ( LocationOfStillMovement < 0 )
				{
					LocationOfStillMovement = LocationOfStillMovement + RepeatLength;
					numberOfTransitions++;//Comment Out Both Of These To Not Transition To A Different Color
				}
				while ( LocationOfStillMovement > RepeatLength )
				{
					LocationOfStillMovement = LocationOfStillMovement - RepeatLength;
					numberOfTransitions--;//Comment Out Both Of These To Not Transition To A Different Color
				}
				if ( LocationOfStillMovement < FormulaValue )
					FormulaValue = FormulaValue - LocationOfStillMovement + ( numberOfTransitions + 1 ) * RepeatLength;
				else
					FormulaValue = FormulaValue + numberOfTransitions * RepeatLength;
				while ( FormulaValue <= 0 )
					FormulaValue = FormulaValue + ColorsLength;
				while ( FormulaValue >= ColorsLength )
					FormulaValue = FormulaValue - ColorsLength;// */
			}
		}
		else
		{
			if ( negativeRepeatLength && negativeColorsLength )
			{
				//FormulaValue = 0; //For Testing Specific SubFunction Only
				numberOfTransitions = 0;//- ( RepeatLength - 2 * ColorsLength ) / ColorsLength;
				FormulaValue = - FormulaValue + ( RepeatLength + ColorsLength ) / 2 + RepeatLength / ColorsLength * RepeatLength / 2;
				while ( FormulaValue <= 0 )
					FormulaValue = FormulaValue + RepeatLength;
				while ( FormulaValue >= ( RepeatLength + ColorsLength ) / 2 )
					FormulaValue = FormulaValue - RepeatLength;
				LocationOfStillMovement = - LocationOfStillMovement + ( RepeatLength + ColorsLength ) / 2 + RepeatLength / ColorsLength * RepeatLength / 2;
				while ( LocationOfStillMovement <= 0 )
				{
					LocationOfStillMovement = LocationOfStillMovement + RepeatLength;
					numberOfTransitions++;//Comment Out Both Of These To Not Transition To A Different Color
				}
				while ( LocationOfStillMovement >= ( RepeatLength + ColorsLength ) / 2 )//( RepeatLength + ColorsLength ) / 2 )
				{
					LocationOfStillMovement = LocationOfStillMovement - RepeatLength;
					numberOfTransitions--;//Comment Out Both Of These To Not Transition To A Different Color
				}
				if ( LocationOfStillMovement <= FormulaValue )
					FormulaValue = FormulaValue - LocationOfStillMovement + ( numberOfTransitions + 1 ) * RepeatLength + ( RepeatLength + ColorsLength ) / 2;//Leave For Desyncronization !TEST?
				else
					FormulaValue = FormulaValue + numberOfTransitions * RepeatLength;//Leave For Desyncronization !TEST?
				while ( FormulaValue <= 0 )
					FormulaValue = FormulaValue + RepeatLength;
				while ( FormulaValue >= ( RepeatLength + ColorsLength ) / 2 )
					FormulaValue = FormulaValue - RepeatLength;// */
				FormulaValue = RepeatLength - FormulaValue;//Critical Change
				while ( RepeatLength - FormulaValue < 0 )
					FormulaValue = FormulaValue - RepeatLength;
				while ( RepeatLength - FormulaValue > RepeatLength )
					FormulaValue = FormulaValue + RepeatLength;
				if ( FormulaValue - RepeatLength < -RepeatLength / 2 )
					FormulaValue = FormulaValue + 2 * RepeatLength; 
				return  FormulaValue - RepeatLength;// */
			}
			else if ( negativeColorsLength )
			{
				//FormulaValue = 0; //For Testing Specific SubFunction Only
				numberOfTransitions = 0;//- ( RepeatLength - 2 * ColorsLength ) / ColorsLength;
				FormulaValue = - FormulaValue + ( RepeatLength + ColorsLength ) / 2 + RepeatLength / ColorsLength * RepeatLength / 2;
				while ( FormulaValue <= 0 )
					FormulaValue = FormulaValue + RepeatLength;
				while ( FormulaValue >= ( RepeatLength + ColorsLength ) / 2 )
					FormulaValue = FormulaValue - RepeatLength;
				LocationOfStillMovement = - LocationOfStillMovement + ( RepeatLength + ColorsLength ) / 2 + RepeatLength / ColorsLength * RepeatLength / 2;
				while ( LocationOfStillMovement <= 0 )
				{
					LocationOfStillMovement = LocationOfStillMovement + RepeatLength;
					numberOfTransitions++;//Comment Out Both Of These To Not Transition To A Different Color
				}
				while ( LocationOfStillMovement >= ( RepeatLength + ColorsLength ) / 2 )//( RepeatLength + ColorsLength ) / 2 )
				{
					LocationOfStillMovement = LocationOfStillMovement - RepeatLength;
					numberOfTransitions--;//Comment Out Both Of These To Not Transition To A Different Color
				}
				if ( LocationOfStillMovement <= FormulaValue )
					FormulaValue = FormulaValue - LocationOfStillMovement + ( numberOfTransitions + 1 ) * RepeatLength + ( RepeatLength + ColorsLength ) / 2;//Leave For Desyncronization !TEST?
				else
					FormulaValue = FormulaValue + numberOfTransitions * RepeatLength;//Leave For Desyncronization !TEST?
				while ( FormulaValue <= 0 )
					FormulaValue = FormulaValue + RepeatLength;
				while ( FormulaValue >= ( RepeatLength + ColorsLength ) / 2 )
					FormulaValue = FormulaValue - RepeatLength;// */
			}
			else if ( negativeRepeatLength )
			{
				//FormulaValue = 0; //For Testing Specific SubFunction Only
				numberOfTransitions = 0;//- ( RepeatLength - 2 * ColorsLength ) / ColorsLength;
				FormulaValue = FormulaValue + ( RepeatLength + ColorsLength ) / 2 + RepeatLength / ColorsLength * RepeatLength / 2;
				while ( FormulaValue <= 0 )
					FormulaValue = FormulaValue + RepeatLength;
				while ( FormulaValue >= ( RepeatLength + ColorsLength ) / 2 )
					FormulaValue = FormulaValue - RepeatLength;
				LocationOfStillMovement = - LocationOfStillMovement + ( RepeatLength + ColorsLength ) / 2 + RepeatLength / ColorsLength * RepeatLength / 2;
				while ( LocationOfStillMovement <= 0 )
				{
					LocationOfStillMovement = LocationOfStillMovement + RepeatLength;
					numberOfTransitions++;//Comment Out Both Of These To Not Transition To A Different Color
				}
				while ( LocationOfStillMovement >= ( RepeatLength + ColorsLength ) / 2 )//( RepeatLength + ColorsLength ) / 2 )
				{
					LocationOfStillMovement = LocationOfStillMovement - RepeatLength;
					numberOfTransitions--;//Comment Out Both Of These To Not Transition To A Different Color
				}
				if ( LocationOfStillMovement <= FormulaValue )
					FormulaValue = FormulaValue - LocationOfStillMovement + ( numberOfTransitions + 1 ) * RepeatLength + ( RepeatLength + ColorsLength ) / 2;//Leave For Desyncronization !TEST?
				else
					FormulaValue = FormulaValue + numberOfTransitions * RepeatLength;//Leave For Desyncronization !TEST?
				while ( FormulaValue <= 0 )
					FormulaValue = FormulaValue + RepeatLength;
				while ( FormulaValue >= ( RepeatLength + ColorsLength ) / 2 )
					FormulaValue = FormulaValue - RepeatLength;// */
				//Bad FormulaValue = - FormulaValue / RepeatLength;//Critical Change
				FormulaValue = FormulaValue - ColorsLength / 2;
				while ( FormulaValue < 0 )
					FormulaValue = FormulaValue + RepeatLength;
				while ( FormulaValue > RepeatLength )
					FormulaValue = FormulaValue - RepeatLength;
				if ( FormulaValue > RepeatLength / 2 )
				{
					FormulaValue = FormulaValue + 3 * RepeatLength / 2;
					return  FormulaValue - RepeatLength;
				}
				return -FormulaValue;// *//
			}
			else
			{
				//FormulaValue = 0; //For Testing Specific SubFunction Only
				numberOfTransitions = 0;//- ( RepeatLength - 2 * ColorsLength ) / ColorsLength;
				FormulaValue = FormulaValue + ( RepeatLength + ColorsLength ) / 2 + RepeatLength / ColorsLength * RepeatLength / 2;
				while ( FormulaValue <= 0 )
					FormulaValue = FormulaValue + RepeatLength;
				while ( FormulaValue >= ( RepeatLength + ColorsLength ) / 2 )
					FormulaValue = FormulaValue - RepeatLength;
				LocationOfStillMovement = - LocationOfStillMovement + ( RepeatLength + ColorsLength ) / 2 + RepeatLength / ColorsLength * RepeatLength / 2;
				while ( LocationOfStillMovement <= 0 )
				{
					LocationOfStillMovement = LocationOfStillMovement + RepeatLength;
					numberOfTransitions++;//Comment Out Both Of These To Not Transition To A Different Color
				}
				while ( LocationOfStillMovement >= ( RepeatLength + ColorsLength ) / 2 )//( RepeatLength + ColorsLength ) / 2 )
				{
					LocationOfStillMovement = LocationOfStillMovement - RepeatLength;
					numberOfTransitions--;//Comment Out Both Of These To Not Transition To A Different Color
				}
				if ( LocationOfStillMovement <= FormulaValue )
					FormulaValue = FormulaValue - LocationOfStillMovement + ( numberOfTransitions + 1 ) * RepeatLength + ( RepeatLength + ColorsLength ) / 2;//Leave For Desyncronization !TEST?
				else
					FormulaValue = FormulaValue + numberOfTransitions * RepeatLength;//Leave For Desyncronization !TEST?
				while ( FormulaValue <= 0 )
					FormulaValue = FormulaValue + RepeatLength;
				while ( FormulaValue >= ( RepeatLength + ColorsLength ) / 2 )
					FormulaValue = FormulaValue - RepeatLength;// */
			}
		}
		return FormulaValue;
	}	
	public Color[] CustomColorsReverser ( Color[] FXcolorArray )//Reverses Custom Colors By Flipping Around Colors Like Rainbow Reversal Without Changing Any Colors Like Green In Rainbow To Pink In Reversed //
	{
		this.fxColorArray = new Color[FXcolorArray.length];
		for (int c = 0; c < FXcolorArray.length; c++)
			fxColorArray[c] = FXcolorArray[ FXcolorArray.length - c - 1 ];
		return fxColorArray;
	}
	public double ColorValueFitter ( double ColorToBeChecked )//Makes Sure Colors Don't Cause Systemic Failures //27th Square In SimpleDiagnosticsClass.java
	{
		this.ColorBeingChecked = Math.abs(ColorToBeChecked);
		while ( ColorBeingChecked > 255)
			this.ColorBeingChecked = ColorBeingChecked - 255;
		return ColorBeingChecked;
	}
	public double OpacityValueFitter ( double OpacityToBeChecked )//Makes Sure Color Opacitys Don't Cause Systemic Failures //28th Square In SimpleDiagnosticsClass.java
	{
		this.OpacityBeingChecked = Math.abs(OpacityToBeChecked);
		while ( OpacityBeingChecked > 1)
			this.OpacityBeingChecked = OpacityBeingChecked - 1;
		return OpacityBeingChecked;
	}
	public void set(double[] ARGB) { argb = ARGB; rgb[0] = argb[0]; rgb[1] = argb[1]; rgb[2] = argb[2]; fxColor = fxColor.rgb( (int)(ColorValueFitter(argb[0])), (int)(ColorValueFitter(argb[1])), (int)(ColorValueFitter(argb[2])), (int)(OpacityValueFitter(argb[3])) ); color = new RainbowSoftColor( argb ); }//Assigns Colors With argb //29th Square In SimpleDiagnosticsClass.java
	public void set(Color FXColor) { fxColor = FXColor; argb = new double[] { FXColor.getRed() * 255, FXColor.getGreen() * 255, FXColor.getBlue() * 255, FXColor.getOpacity() }; color = new RainbowSoftColor( argb ); }//Assigns Colors With FXColor //30th Square In SimpleDiagnosticsClass.java
	public Object get() { return argb; }//Returns Always Happen With Variable Output With argb Functionality //31st Square In SimpleDiagnosticsClass.java
}


/*while ( radius < colorDisplacement)//For Rainbow Ring
	radius = radius + fullAngle - colorDisplacement;//BAD COMMENT: For Rainbow Ring Take Out - 38
while ( radius > fullAngle )
	radius = radius - fullAngle - colorDisplacement;// */


/*final double chrysanthemumRadius = 60;
double radialVariableDistance = Math.pow(Math.pow( x, 2 ) + Math.pow( y, 2), 0.5);//Comment Out For  Ghetto Many Rainbow Clocks
double angleVariable = chrysanthemumRadius * ( ( - Math.atan2( x, y ) + Math.PI ) - 6 * Math.PI * Location / ( Math.PI * Math.pow(Math.pow( HalfedDim.width, 2 ) + Math.pow( HalfedDim.height, 2 ), 0.5 ) / 10 ) );//Use For Rainbow Spiral Multiply radialDistance By 10 To Increase The Number Of Spirals
//double radiusVariable = chrysanthemumRadius * ( radialVariableDistance * 24.6 + angleVariable);//radialVariableDistance + colorDisplacement + angle;//Remove + angle And Add xSlider To Make Rainbow Clock
while ( radiusVariable < 0 )//For Rainbow Ring
	radiusVariable = radiusVariable + 2 * Math.PI * chrysanthemumRadius;//BAD COMMENT: For Rainbow Ring Take Out - 38
while ( radiusVariable > 2 * Math.PI * chrysanthemumRadius )
	radiusVariable = radiusVariable - 2 * Math.PI * chrysanthemumRadius;
double colorIntervalVariable = 2 * Math.PI * chrysanthemumRadius / ( FXcolorArray.length - 1 );// USE FOR HYPNOSIS SPIRAL I THINK */
//sliderValue = SliderFormulate( ColorsFactor, Math.pow( Math.pow(x, 2) + Math.pow(y, 2), 0.5 ), Location, RepeatFactor );
