private void SetupCircles() { int maxLines = 500000; fLines = new DynamicPrimitiveLine(fSpriteBatch.GraphicsDevice); bool first = true; while (fLines.Lines < maxLines) { //int w = Game.GraphicsDevice.Viewport.Width; //int h = Game.GraphicsDevice.Viewport.Height; float x = (float)(1500.0f * (fRandom.NextDouble() - 0.5f)); float y = (float)(1500.0f * (fRandom.NextDouble() - 0.5f)); int radius = fRandom.Next(400) + 10; int segments = 50; byte r = (byte)fRandom.Next(256); byte g = (byte)fRandom.Next(256); byte b = (byte)fRandom.Next(256); byte a = 255; if (first) { x = 0; y = 0; radius = 500; r = 255; g = 255; b = 255; first = false; } while (fLines.Lines < maxLines && radius > 20) { Color color = new Color(r, g, b, a); fLines.AddCircle(x, y, 0, radius, segments, color); radius--; x++; if (r > 3) { r -= 3; } if (g > 3) { g -= 3; } if (b > 3) { b -= 3; } } } }
private void InitLines() { fLinesChanged = false; fLines = new DynamicPrimitiveLine(fSpriteBatch.GraphicsDevice); int maxLines = 1000000; float rStep = 0.3f; int segments = 500; if (!fManyLines) { maxLines = 20000; rStep = 30.0f; } float radius1 = 0; Color color1a = GetRandomColor(); Color color1b = GetRandomColor(); Color color2a = GetRandomColor(); Color color2b = GetRandomColor(); int colorStep = 0; while (fLines.Lines < maxLines) { Color colorA = GetColor(color1a, color2a, colorStep / 100.0f); Color colorB = GetColor(color1b, color2b, colorStep / 100.0f); float radius2 = radius1 + rStep; fLines.AddCircle(0, 0, 0, radius1, radius2, segments, colorA, colorB); colorStep++; if (colorStep > 100) { color1a = color2a; color1b = color2b; color2a = GetRandomColor(); color2b = GetRandomColor(); colorStep = 0; } radius1 = radius2; } }
private void UpdateScale() { InitializeTransform(); InitializeEffect(); if (fSpriteBatch == null) { return; } int maxLines = 1000000; fLines = new DynamicPrimitiveLine(fSpriteBatch.GraphicsDevice); CircleData circleTo = CreateRandomCircle(); CircleData circleFrom = null; int currentStep = 0; int maxSteps = 0; while (fLines.Lines < maxLines) { CircleData currentCircle; currentStep++; if (currentStep >= maxSteps) { circleFrom = circleTo; circleTo = CreateRandomCircle(); currentStep = 0; maxSteps = fRandom.Next(200) + 1; currentCircle = circleFrom; } else { float f = Convert.ToSingle(currentStep) / maxSteps; currentCircle = CalculateAverageCircle(circleFrom, circleTo, f); } Color c1 = new Color(currentCircle.R1, currentCircle.G1, currentCircle.B1, (byte)255); Color c2 = new Color(currentCircle.R2, currentCircle.G2, currentCircle.B2, (byte)255); fLines.AddCircle(currentCircle.X, currentCircle.Y, 0, currentCircle.Radius, currentCircle.Radius, currentCircle.Segments, c1, c2); } }
/// <summary> /// Initializes the lines /// </summary> private void InitializeLines() { fLines = new DynamicPrimitiveLine(GraphicsDevice); for (int i = 0; i < 256; i++) { fLines.AddCircle(TARGET_WIDTH / 2, TARGET_HEIGHT / 2, 0, i / 5.0f, 50, new Color(i, 255 - i, 255 - i, 255)); } for (int i = 0; i < 5; i++) { Color color = new Color(255 - i * 25, 0, 0, 255); fLines.AddLine( new VertexPositionColor(new Vector3(i, i, 0), color), new VertexPositionColor(new Vector3(TARGET_WIDTH - i - 1, i, 0), color)); fLines.AddLine( new VertexPositionColor(new Vector3(TARGET_WIDTH - i - 1, i, 0), color), new VertexPositionColor(new Vector3(TARGET_WIDTH - i - 1, TARGET_HEIGHT - i - 1, 0), color)); fLines.AddLine( new VertexPositionColor(new Vector3(TARGET_WIDTH - i - 1, TARGET_HEIGHT - i - 1, 0), color), new VertexPositionColor(new Vector3(i, TARGET_HEIGHT - i - 1, 0), color)); fLines.AddLine( new VertexPositionColor(new Vector3(i, TARGET_HEIGHT - i - 1, 0), color), new VertexPositionColor(new Vector3(i, i, 0), color)); } }