x = 0; y = 0; xSlider = 0; a = 0; colorInterval = Dim.width / ( numberOfColorsInTheRainbow - 1 ); numberOfClockHands = 16; colorDisplacement = 0;//For Rainbow Disk And 0 Rainbow Clock radialDistance = Math.pow(Math.pow(HalfedDim.width + 1, 2) + Math.pow(HalfedDim.height + 1, 2), 0.5); angle = 0; radius = 0; fullAngle = Math.PI * radialDistance; interval = fullAngle / 2 / fRateDivisor;//Last Division Determines The Frame Rate colorInterval = fullAngle / ( numberOfColorsInTheRainbow - 1 );//For Rainbow Clock And Spiral while (xSlider < fullAngle / 10 ) {//0.175979734764 * //Dim = f.getSize();//Dim = f.getContentPane().getSize(); HalfedDim.width = Math.round( ( Dim.width + 1 ) / 2 - 1 ); HalfedDim.height = Math.round( ( Dim.height + 1 ) / 2 - 1 ); radialDistance = Math.pow(Math.pow(HalfedDim.width + 1, 2) + Math.pow(HalfedDim.height + 1, 2), 0.5); colorDisplacement = 0;//For Rainbow Disk for (x = 0; x < Dim.width; x++)//Comment Out Here For Circular Rainbow {//Comment Out Here For Circular Rainbow for (y = 0; y < Dim.height; y++) { angle = Math.atan2( (x - HalfedDim.width + 1) , (y - Dim.height * 4 / 3 + 1 ) );// For Rising Sun + 1 a = ( angle * /*Math.cos( angle ) * Math.sin( angle ) * Math.pow(radialVariableDistance, 1)*/ Math.tan( angle ) /*+ Math.PI*/ ) * radialDistance / 4.46783504 + xSlider;// + Or - xSlider Determines Which Direction It Moves //For Infinite Number Theorem Good a = ( angle * /*Math.cos( angle ) * Math.sin( angle ) * Math.pow(radialVariableDistance, 1)*/ Math.tan( angle ) + Math.PI ) * radialDistance / 4.46783504 - xSlider; //a = ( angle /*Math.cos( angle ) * Math.sin( angle ) * Math.pow(radialVariableDistance, 1)*/ Math.tan( angle ) + Math.PI ) * radialDistance / 4.46783504 - xSlider;//Use For Rainbow Spiral Multiply radialDistance By 10 To Increase The Number Of Spirals //Use This: "a = ( - angle + Math.PI ) * radialDistance;" Line For Rainbow Clock //a = ( - angle * Math.tan( angle ) + Math.PI ) * radialDistance - xSlider; For Infinite Number Theorem //a = ( - angle * Math.cos( angle ) * Math.sin( angle ) * Math.pow(radialVariableDistance, 2) + Math.PI ) * radialDistance - xSlider; */ radius = a * 10; // *///For Old Infinite Number Theorem Use Above //radius = a * 10;//For Rainbow Spiral And Clock //} while ( radius < colorDisplacement)//For Rainbow Ring radius = radius + fullAngle - colorDisplacement;//BAD COMMENT: For Rainbow Ring Take Out - 38 while ( radius > fullAngle )//radius > fullAngle For Non Infinite Number Theorem radius = radius - fullAngle - colorDisplacement; //radius = radius - fullAngle; For Non Infinite Number Theorem //For Rainbow Clock Comment Out To Here. Here -- */ if ( radius >= colorDisplacement && radius < (numberOfColorsInTheRainbow - 1) * colorInterval + colorDisplacement)//For Purple Outside Ring { if ( origionalpr.getArgb(x, y) == pixiePink ) if ( radius < colorInterval + colorDisplacement)//For Normal Rainbow Use This Instead Of The Others color.ColorSliderFunction(colorInterval, radius - colorDisplacement, purple, blue); else if ( radius < ( 2 * colorInterval + colorDisplacement) ) color.ColorSliderFunction(colorInterval, radius - colorInterval - colorDisplacement, blue, teal); else if ( radius < ( 3 * colorInterval + colorDisplacement) ) color.ColorSliderFunction(colorInterval, radius - 2 * colorInterval - colorDisplacement, teal, pink); else if ( radius < ( 4 * colorInterval + colorDisplacement) ) color.ColorSliderFunction(colorInterval, radius - 3 * colorInterval - colorDisplacement, pink, yellow); else if ( radius < ( 5 * colorInterval + colorDisplacement) ) color.ColorSliderFunction(colorInterval, radius - 4 * colorInterval - colorDisplacement, yellow, orange); else color.ColorSliderFunction(colorInterval, radius - 5 * colorInterval - colorDisplacement, orange, red); else//*/ if ( radius < colorInterval + colorDisplacement)//For Normal Rainbow Use This Instead Of The Others color.ColorSliderFunction(colorInterval, radius - colorDisplacement, red, orange); else if ( radius < ( 2 * colorInterval + colorDisplacement) ) color.ColorSliderFunction(colorInterval, radius - colorInterval - colorDisplacement, orange, yellow); else if ( radius < ( 3 * colorInterval + colorDisplacement) ) color.ColorSliderFunction(colorInterval, radius - 2 * colorInterval - colorDisplacement, yellow, green); else if ( radius < ( 4 * colorInterval + colorDisplacement) ) color.ColorSliderFunction(colorInterval, radius - 3 * colorInterval - colorDisplacement, green, teal); else if ( radius < ( 5 * colorInterval + colorDisplacement) ) color.ColorSliderFunction(colorInterval, radius - 4 * colorInterval - colorDisplacement, teal, blue); else color.ColorSliderFunction(colorInterval, radius - 5 * colorInterval - colorDisplacement, blue, purple);//* } //Use To //*/ For Rainbow Clock /*double angle = ( Math.atan2( (x - HalfedDim.width + 1) , (y - HalfedDim.height + 1 ) ) + Math.PI ) * radialDistance + xSlider; if (angle < 0) angle = angle + fullAngle / numberOfClockHands; else while (angle > fullAngle / numberOfClockHands) angle = angle - fullAngle / numberOfClockHands; //angle = 0;//Testing Purposes Only. if ( angle < colorInterval)//For Normal Rainbow Use This Instead Of The Others color.ColorSliderFunction(colorInterval, angle, red, orange); else if ( angle < 2 * colorInterval ) color.ColorSliderFunction(colorInterval, angle - colorInterval, orange, yellow); else if ( angle < 3 * colorInterval ) color.ColorSliderFunction(colorInterval, angle - 2 * colorInterval, yellow, green); else if ( angle < 4 * colorInterval ) color.ColorSliderFunction(colorInterval, angle - 3 * colorInterval, green, teal); else if ( angle < 5 * colorInterval ) color.ColorSliderFunction(colorInterval, angle - 4 * colorInterval, teal, blue); else color.ColorSliderFunction(colorInterval, angle - 5 * colorInterval, blue, purple);//*/ pw.setArgb( x, y, (int)(255 * 16777216 + (int)color.RGB[0] * 65536 + (int)color.RGB[1] * 256 + (int)color.RGB[2]));//setArgb } } imageView.setImage(writableImage); stackPane[(int)(fRateDivisor * xSlider/fullAngle) + 1] = new StackPane(); stackPane[(int)(fRateDivisor * xSlider/fullAngle) + 1].getChildren().add(imageView); //stackPane[(int)(fRateDivisor * xSlider/fullAngle) + 1].getChildren().add(browser); scene[(int)(fRateDivisor * xSlider/fullAngle) + 1] = new Scene(stackPane[(int)(fRateDivisor * xSlider/fullAngle) + 1]); primaryStage.setScene(scene[(int)(fRateDivisor * xSlider/fullAngle) + 1]); System.out.println(Dim); primaryStage.setFullScreen(true); primaryStage.show(); if (xSlider == (int)Math.round(colorDisplacement) + radialDistance * 2 * Math.PI / numberOfClockHands / 2) { File outputFile = new File("C:/TestImage.png"); BufferedImage bImage = SwingFXUtils.fromFXImage(scene[(int)(fRateDivisor * xSlider/fullAngle) + 1].snapshot(null), null); try { ImageIO.write(bImage, "png", outputFile); } catch (IOException e) { throw new RuntimeException(e); } } enc.encodeImage( SwingFXUtils.fromFXImage(scene[(int)(fRateDivisor * xSlider/fullAngle) + 1].snapshot(null), null ) ); //enc.encodeImage( SwingFXUtils.fromFXImage( imageView.getImage(), null ) ); xSlider = xSlider + interval; System.out.println(Dim); //} //Thread.sleep(2000);} //catch (Exception ex) {ex.printStackTrace();} }