示例#1
0
        //_square = new SquareValues(0.1, 0.3, -0.1, -0.076, 0.0, -0.59, 0.0, 0.0); ;
        private void DoInitializeHexagon()
        {
            Hexgn.x = Hexgn.xnew = 0.1d;
            Hexgn.y = Hexgn.ynew = 0.3d;

            Hexgn.alpha  = -0.1d;
            Hexgn.beta   = -0.076d;
            Hexgn.gamma  = 0d;
            Hexgn.lambda = -0.59d;
            Hexgn.ma     = 0d;
            Hexgn.omega  = 0d;

            Hexgn.shift = 0;
            Hexgn.delta = 0.1d;

            Hexgn.SetVectors();
            Hexgn.SetVectorThree();
        }
示例#2
0
        private Variables DoRandomiseInitializeHexagon()
        {
            DoInitializeHexagon();

            if (randomize.NextDouble() < 0.5)
            {
                Hexgn.x = Hexgn.xnew = Get_Random_In_Range();
            }
            if (randomize.NextDouble() < 0.5)
            {
                Hexgn.y = Hexgn.ynew = Get_Random_In_Range();
            }

            //if (randomize.NextDouble() < 0.5)
            Hexgn.delta = Get_Random_In_Range(2.0);
            //if (randomize.NextDouble() < 0.5)
            Hexgn.beta = Get_Random_In_Range(2.0);
            //if (randomize.NextDouble() < 0.5)
            Hexgn.gamma = Get_Random_In_Range(2.0);
            //if (randomize.NextDouble() < 0.5)
            Hexgn.ma = Get_Random_In_Range(2.0);
            //if (randomize.NextDouble() < 0.5)
            Hexgn.omega = Get_Random_In_Range(2.0);
            //if (randomize.NextDouble() < 0.5)
            Hexgn.shift = Get_Random_In_Range(2.0);
            // if (randomize.NextDouble() < 0.5)
            Hexgn.SetVectors(
                (randomize.NextDouble() < 0.5) ? Get_Random_In_Range(0, 1) : 1,
                (randomize.NextDouble() < 0.5) ? Get_Random_In_Range(0, 1) : 0,
                (randomize.NextDouble() < 0.5) ? Get_Random_In_Range(0, 1) : 0.5,
                (randomize.NextDouble() < 0.5) ? Get_Random_In_Range(0, 1) : 1,
                (randomize.NextDouble() < 0.5) ? Get_Random_In_Range(0, 1) : 0);

            Hexgn.SetVectorThree();

            return(Hexgn);
        }
示例#3
0
        private void DoMenuKeys(ref Variables var)
        {
            bool resetAll = false;
            bool SizeChanged = false;

            if (newKeyboard.IsKeyUp(Keys.Q) && oldKeyboard.IsKeyDown(Keys.Q))
            {
                quiltType++;
                if ((int)quiltType == 3) quiltType++;
                if ((int)quiltType == 5) quiltType = QuiltType.Square;

                resetAll = true;
            }

            if (newKeyboard.IsKeyUp(Keys.F) && oldKeyboard.IsKeyDown(Keys.F))
                RandomiseTillGoodValues = true;

            if (newKeyboard.IsKeyUp(Keys.C) && oldKeyboard.IsKeyDown(Keys.C))
            {
                SetColors(true);
            }
            if (newKeyboard.IsKeyUp(Keys.N) && oldKeyboard.IsKeyDown(Keys.N))
            {
                SetColors(false);
            }
            if (newKeyboard.IsKeyUp(Keys.V) && oldKeyboard.IsKeyDown(Keys.V))
            {
                ReverseColors();
            }

            #region Reset
            if ((newKeyboard.IsKeyUp(Keys.R) && oldKeyboard.IsKeyDown(Keys.R)) || RandomiseTillGoodValues || resetAll)
            {
                //iterates = 0;
                //MaxHitCount = 0;
                
                if (newKeyboard.IsKeyDown(Keys.LeftShift) || newKeyboard.IsKeyDown(Keys.RightShift) || resetAll)
                {
                    switch (quiltType)
                    {
                        case QuiltType.Square:
                            DoInitializeQuilt();
                            break;
                        case QuiltType.Hexagon:
                            DoInitializeHexagon();
                            break;
                        case QuiltType.Icon:
                            DoInitializeIcon1();
                            break;
                      
                        case QuiltType.Icon3:
                            DoInitializeIcon3();
                            break;
                        default:
                            DoExit = true;
                            return;
                    }
                }
                else
                {
                    var.InitialiseCoords(quiltType);
                    if (quiltType == QuiltType.Hexagon) Hexgn.SetVectorThree();
                }

                QuickReset();
            }
            #endregion

            double add = 0.0001d;
            if (newKeyboard.IsKeyDown(Keys.LeftShift) || newKeyboard.IsKeyDown(Keys.RightShift)) add = -0.0001d;

            if (newKeyboard.IsKeyDown(Keys.LeftControl) || newKeyboard.IsKeyDown(Keys.RightControl))
                add *= 10;
            if (newKeyboard.IsKeyDown(Keys.LeftAlt) || newKeyboard.IsKeyDown(Keys.RightAlt))
                add *= 100;

            if (newKeyboard.IsKeyUp(Keys.F) && oldKeyboard.IsKeyDown(Keys.F))
                var.shift = 0.5d - var.shift;

            if (newKeyboard.IsKeyDown(Keys.X)) var.x += add;

            if (newKeyboard.IsKeyDown(Keys.Y)) var.y += add;

            if (newKeyboard.IsKeyDown(Keys.Z)) fieldNscale += add;

            if (newKeyboard.IsKeyDown(Keys.D)) var.delta += add;

            if (newKeyboard.IsKeyDown(Keys.L)) var.lambda += add;

            if (newKeyboard.IsKeyDown(Keys.A)) var.alpha += add;

            if (newKeyboard.IsKeyDown(Keys.B)) var.beta += add;

            if (newKeyboard.IsKeyDown(Keys.G)) var.gamma += add;

            if (newKeyboard.IsKeyDown(Keys.O)) var.omega += add;

            if (newKeyboard.IsKeyDown(Keys.M)) var.ma += add;

            if (newKeyboard.IsKeyUp(Keys.T) && oldKeyboard.IsKeyDown(Keys.T))
                isThreaded = !isThreaded;

            #region Randomize Values
            if ((newKeyboard.IsKeyUp(Keys.S) && oldKeyboard.IsKeyDown(Keys.S)) ||
                        RandomiseTillGoodValues)
            {
                switch (quiltType)
                {
                    case QuiltType.Square:
                        var = DoRandomiseInitializeQuilt();
                        break;
                    case QuiltType.Hexagon:
                        var = DoRandomiseInitializeHexagon();
                        break;
                    case QuiltType.Icon:
                        var = DoRandomInitializeIcon1();
                        break;
                    case QuiltType.Icon3:
                        var = DoRandomizeIcon3();
                        break;
                    default:
                        break;
                }
            }
            #endregion

            #region Begin Iterations
            if ((newKeyboard.IsKeyUp(Keys.I) && oldKeyboard.IsKeyDown(Keys.I)) ||
                        RandomiseTillGoodValues)
            {
                programState = ProgramState.iterate;
                isPaused = false;
                maxitsPerFrame = _itersPerFrame;
            }
            #endregion

            #region Width
            if (newKeyboard.IsKeyUp(Keys.W) && oldKeyboard.IsKeyDown(Keys.W))
            {
                if (newKeyboard.IsKeyDown(Keys.LeftShift) || newKeyboard.IsKeyDown(Keys.RightShift))
                {
                    if (Width > 32)
                    {
                        NewWidth /= 2;
                        SizeChanged = true;
                    }
                }
                else
                {
                    if (Width < 1024)
                    {
                        NewWidth *= 2;
                        SizeChanged = true;
                    }
                }
            }
            #endregion
            #region Height
            if (newKeyboard.IsKeyUp(Keys.H) && oldKeyboard.IsKeyDown(Keys.H))
            {
                if (newKeyboard.IsKeyDown(Keys.LeftShift) || newKeyboard.IsKeyDown(Keys.RightShift))
                {
                    if (Height > 32)
                    {
                        NewHeight /= 2;
                        SizeChanged = true;
                    }
                }
                else
                {
                    if (Height < 1024)
                    {
                        NewHeight *= 2;
                        SizeChanged = true;
                    }
                }
            }

            if (SizeChanged)
            {
                while (iterateGenerateFrame) { }

                Width = NewWidth; Height = NewHeight;
                freshFrame[0] = new Texture2D(GraphicsDevice, Width, Height);
                freshFrame[1] = new Texture2D(GraphicsDevice, Width, Height);

                //GenerateTexture.Update_NewFieldSet(field);
            }
            #endregion

            #region Goto Sampling
            if (newKeyboard.IsKeyDown(Keys.E))
            {
                RandomiseTillGoodValues = false;
                programState = ProgramState.sampling;
                sampleState = SampleState.findMax;
                isPaused = false;
                _isPauseReleased = true;
            }
            #endregion
        }