Ejemplo n.º 1
0
 /// <summary>
 /// Init a new VoronoiEngine with a list of points
 /// </summary>
 /// <param name="points"></param>
 public VoronoiEngine(List <VoronoiPoint> points, ColorRampEnum colorRamp = ColorRampEnum.RAINBOW, ApplyColorDirectionEnum colorDirection = ApplyColorDirectionEnum.NONE)
 {
     this._points = points;
     this.ApplyColorRamp(colorRamp, colorDirection);
 }
Ejemplo n.º 2
0
        /// <summary>
        /// Apply a color ramp according to provided enum
        /// </summary>
        /// <param name="ramp"></param>
        /// <returns></returns>
        private void ApplyColorRamp(ColorRampEnum ramp, ApplyColorDirectionEnum colorDirection = ApplyColorDirectionEnum.NONE)
        {
            var pointCount = this._points.Count;

            if (colorDirection == ApplyColorDirectionEnum.HORIZONTAL)
            {
                this._points.Sort((a, b) => a.RelativeCoordinates.X.CompareTo(b.RelativeCoordinates.X));
            }
            else if (colorDirection == ApplyColorDirectionEnum.VERTICAL)
            {
                this._points.Sort((a, b) => a.RelativeCoordinates.Y.CompareTo(b.RelativeCoordinates.Y));
            }

            if (ramp == ColorRampEnum.GRAY_SCALE)
            {
                for (int i = 0; i < pointCount; i++)
                {
                    var comp = (int)(i * 256.0 / pointCount);
                    this._points[i].Color = new Color(comp, comp, comp);
                }
            }
            else if (ramp == ColorRampEnum.RAINBOW)
            {
                for (int i = 0; i < pointCount; i++)
                {
                    this._points[i].Color = Toolkit.FromHsl(i / 20.0f, 1f, 0.5f);
                }
            }
            else if (ramp == ColorRampEnum.OCEAN)
            {
                var colors = Toolkit.GenerateRampBetween(Color.Blue, Color.White, this._points.Count);
                for (int i = 0; i < this._points.Count; i++)
                {
                    this._points[i].Color = colors[i];
                }
            }
            else if (ramp == ColorRampEnum.DARK_LEAF)
            {
                var colors = Toolkit.GenerateRampBetween(Color.Green, Color.Black, this._points.Count);
                for (int i = 0; i < this._points.Count; i++)
                {
                    this._points[i].Color = colors[i];
                }
            }
            else if (ramp == ColorRampEnum.LAVA)
            {
                var colors = Toolkit.GenerateRampBetween(Color.Yellow, Color.Red, this._points.Count);
                for (int i = 0; i < this._points.Count; i++)
                {
                    this._points[i].Color = colors[i];
                }
            }
            else if (ramp == ColorRampEnum.RANDOM)
            {
                for (int i = 0; i < pointCount; i++)
                {
                    this._points[i].Color = new Color(
                        this._random.Next(0, 255),
                        this._random.Next(0, 255),
                        this._random.Next(0, 255)
                        );
                }
            }
        }
Ejemplo n.º 3
0
 /// <summary>
 /// Init a new Voronoi engine
 /// </summary>
 /// <param name="nbOfPoints"></param>
 public VoronoiEngine(int nbOfPoints, ColorRampEnum colorRamp = ColorRampEnum.RAINBOW, ApplyColorDirectionEnum colorDirection = ApplyColorDirectionEnum.NONE) : this()
 {
     for (var i = 0; i < nbOfPoints; i++)
     {
         this._points.Add(new VoronoiPoint
         {
             Color = Color.Black,
             InitialCoordinates = new Vector2
             {
                 X = this._random.Next(0, 100) / 100.0f,
                 Y = this._random.Next(0, 100) / 100.0f
             }
         });
     }
     this.ApplyColorRamp(colorRamp, colorDirection);
 }