public void Mutate(DnaDrawing drawing) { if (Tools.WillMutate(Settings.ActiveRedMutationRate)) { Red = Tools.GetRandomNumber(Settings.ActiveRedRangeMin, Settings.ActiveRedRangeMax); drawing.SetDirty(); } if (Tools.WillMutate(Settings.ActiveGreenMutationRate)) { Green = Tools.GetRandomNumber(Settings.ActiveGreenRangeMin, Settings.ActiveGreenRangeMax); drawing.SetDirty(); } if (Tools.WillMutate(Settings.ActiveBlueMutationRate)) { Blue = Tools.GetRandomNumber(Settings.ActiveBlueRangeMin, Settings.ActiveBlueRangeMax); drawing.SetDirty(); } if (Tools.WillMutate(Settings.ActiveAlphaMutationRate)) { Alpha = Tools.GetRandomNumber(Settings.ActiveAlphaRangeMin, Settings.ActiveAlphaRangeMax); drawing.SetDirty(); } }
public void Mutate(DnaDrawing drawing) { if (Tools.WillMutate(Settings.ActiveRedMutationRate)) //chance that the red will mutate { Red = Tools.GetRandomNumber(Settings.ActiveRedRangeMin, Settings.ActiveRedRangeMax); //set the red to a random number between some values drawing.SetDirty(); //make it so that we can update the drawing } if (Tools.WillMutate(Settings.ActiveGreenMutationRate)) { Green = Tools.GetRandomNumber(Settings.ActiveGreenRangeMin, Settings.ActiveGreenRangeMax); drawing.SetDirty(); } if (Tools.WillMutate(Settings.ActiveBlueMutationRate)) { Blue = Tools.GetRandomNumber(Settings.ActiveBlueRangeMin, Settings.ActiveBlueRangeMax); drawing.SetDirty(); } if (Tools.WillMutate(Settings.ActiveAlphaMutationRate)) { Alpha = Tools.GetRandomNumber(Settings.ActiveAlphaRangeMin, Settings.ActiveAlphaRangeMax); drawing.SetDirty(); } }
internal void Mutate(DnaDrawing drawing, JobInfo info) { if (info.WillMutate(info.Settings.ColorMutationRate)) { Red = info.GetRandomNumber(0, 255); drawing.SetDirty(); } if (info.WillMutate(info.Settings.ColorMutationRate)) { Green = info.GetRandomNumber(0, 255); drawing.SetDirty(); } if (info.WillMutate(info.Settings.ColorMutationRate)) { Blue = info.GetRandomNumber(0, 255); drawing.SetDirty(); } if (info.WillMutate(info.Settings.ColorMutationRate)) { Alpha = info.GetRandomNumber(info.Settings.AlphaRangeMin, info.Settings.AlphaRangeMax); drawing.SetDirty(); } }
public void Mutate(DnaDrawing drawing) { if (tool.WillMutate(Settings.ActiveRedMutationRate)) { Red = tool.GetRandomNumber(Settings.ActiveRedRangeMin, Settings.ActiveRedRangeMax); drawing.SetDirty(); } if (tool.WillMutate(Settings.ActiveGreenMutationRate)) { Green = tool.GetRandomNumber(Settings.ActiveGreenRangeMin, Settings.ActiveGreenRangeMax); drawing.SetDirty(); } if (tool.WillMutate(Settings.ActiveBlueMutationRate)) { Blue = tool.GetRandomNumber(Settings.ActiveBlueRangeMin, Settings.ActiveBlueRangeMax); drawing.SetDirty(); } if (tool.WillMutate(Settings.ActiveAlphaMutationRate)) { Alpha = tool.GetRandomNumber(Settings.ActiveAlphaRangeMin, Settings.ActiveAlphaRangeMax); drawing.SetDirty(); } }
internal void Mutate(DnaDrawing drawing, JobInfo info) { if (!info.Settings.MuteMovePointMax) { if (info.WillMutate(info.Settings.MovePointMaxMutationRate)) { X = info.GetRandomNumber(0, info.SourceImage.Width); Y = info.GetRandomNumber(0, info.SourceImage.Height); drawing.SetDirty(); } } if (!info.Settings.MuteMovePointMid) { if (info.WillMutate(info.Settings.MovePointMidMutationRate)) { X = X .Randomize(info ,- info.Settings.MovePointRangeMid, info.Settings.MovePointRangeMid) .Max(0) .Min(info.SourceImage.Width); Y = Y .Randomize(info, -info.Settings.MovePointRangeMid, info.Settings.MovePointRangeMid) .Max(0) .Min(info.SourceImage.Height); drawing.SetDirty(); } } if (!info.Settings.MuteMovePointMin) { if (info.WillMutate(info.Settings.MovePointMinMutationRate)) { X = X .Randomize(info, -info.Settings.MovePointRangeMin, info.Settings.MovePointRangeMin) .Max(0) .Min(info.SourceImage.Width); Y = Y .Randomize(info, -info.Settings.MovePointRangeMin, info.Settings.MovePointRangeMin) .Max(0) .Min(info.SourceImage.Height); drawing.SetDirty(); } } }
internal void Mutate(DnaDrawing drawing, JobInfo info) { if (!info.Settings.MuteMovePointMax) { if (info.WillMutate(info.Settings.MovePointMaxMutationRate)) { X = info.GetRandomNumber(0, info.SourceImage.Width); Y = info.GetRandomNumber(0, info.SourceImage.Height); drawing.SetDirty(); } } if (!info.Settings.MuteMovePointMid) { if (info.WillMutate(info.Settings.MovePointMidMutationRate)) { X = X .Randomize(info, -info.Settings.MovePointRangeMid, info.Settings.MovePointRangeMid) .Max(0) .Min(info.SourceImage.Width); Y = Y .Randomize(info, -info.Settings.MovePointRangeMid, info.Settings.MovePointRangeMid) .Max(0) .Min(info.SourceImage.Height); drawing.SetDirty(); } } if (!info.Settings.MuteMovePointMin) { if (info.WillMutate(info.Settings.MovePointMinMutationRate)) { X = X .Randomize(info, -info.Settings.MovePointRangeMin, info.Settings.MovePointRangeMin) .Max(0) .Min(info.SourceImage.Width); Y = Y .Randomize(info, -info.Settings.MovePointRangeMin, info.Settings.MovePointRangeMin) .Max(0) .Min(info.SourceImage.Height); drawing.SetDirty(); } } }
//produces a mutated/changed copy - basically, samll chance to mutate a lot, larger chance to mutate a little public void Mutate(DnaDrawing drawing) { if (Tools.WillMutate(Settings.ActiveMovePointMaxMutationRate)) //find out if it should mutate based on max rate { X = Tools.GetRandomNumber(0, Tools.MaxWidth); //set x and y to another random point Y = Tools.GetRandomNumber(0, Tools.MaxHeight); drawing.SetDirty(); //???? makes it dirty - this means that the drawing can be updates } if (Tools.WillMutate(Settings.ActiveMovePointMidMutationRate)) { X = Math.Min( Math.Max(0, X + Tools.GetRandomNumber(-Settings.ActiveMovePointRangeMid, Settings.ActiveMovePointRangeMid)), Tools.MaxWidth); Y = Math.Min( Math.Max(0, Y + Tools.GetRandomNumber(-Settings.ActiveMovePointRangeMid, Settings.ActiveMovePointRangeMid)), Tools.MaxHeight); drawing.SetDirty(); } if (Tools.WillMutate(Settings.ActiveMovePointMinMutationRate)) { X = Math.Min( Math.Max(0, X + Tools.GetRandomNumber(-Settings.ActiveMovePointRangeMin, Settings.ActiveMovePointRangeMin)), Tools.MaxWidth); Y = Math.Min( Math.Max(0, Y + Tools.GetRandomNumber(-Settings.ActiveMovePointRangeMin, Settings.ActiveMovePointRangeMin)), Tools.MaxHeight); drawing.SetDirty(); } }
public void Mutate(DnaDrawing drawing) { if (Tools.WillMutate(Settings.ActiveMovePointMaxMutationRate)) { X = Tools.GetRandomNumber(0, Tools.MaxWidth); Y = Tools.GetRandomNumber(0, Tools.MaxHeight); drawing.SetDirty(); } if (Tools.WillMutate(Settings.ActiveMovePointMidMutationRate)) { X = Math.Min( Math.Max(0, X + Tools.GetRandomNumber(-Settings.ActiveMovePointRangeMid, Settings.ActiveMovePointRangeMid)), Tools.MaxWidth); Y = Math.Min( Math.Max(0, Y + Tools.GetRandomNumber(-Settings.ActiveMovePointRangeMid, Settings.ActiveMovePointRangeMid)), Tools.MaxHeight); drawing.SetDirty(); } if (Tools.WillMutate(Settings.ActiveMovePointMinMutationRate)) { X = Math.Min( Math.Max(0, X + Tools.GetRandomNumber(-Settings.ActiveMovePointRangeMin, Settings.ActiveMovePointRangeMin)), Tools.MaxWidth); Y = Math.Min( Math.Max(0, Y + Tools.GetRandomNumber(-Settings.ActiveMovePointRangeMin, Settings.ActiveMovePointRangeMin)), Tools.MaxHeight); drawing.SetDirty(); } }
private void RemovePoint(DnaDrawing drawing, JobInfo info) { if (Points.Count > info.Settings.PointsPerPolygonMin) { int index = info.GetRandomNumber(0, Points.Count); Points.RemoveAt(index); drawing.SetDirty(); } }
private void RemovePoint(DnaDrawing drawing) { if (Points.Count > Settings.ActivePointsPerPolygonMin) { int index = tool.GetRandomNumber(0, Points.Count); Points.RemoveAt(index); drawing.SetDirty(); } }
private void AddPoint(DnaDrawing drawing, JobInfo info) { if (Points.Count < info.Settings.PointsPerPolygonMax) { var newPoint = new DnaPoint(); int index = info.GetRandomNumber(1, Points.Count - 1); DnaPoint prev = Points[index - 1]; DnaPoint next = Points[index]; newPoint.X = (prev.X + next.X) / 2; newPoint.Y = (prev.Y + next.Y) / 2; Points.Insert(index, newPoint); drawing.SetDirty(); } }
private void RemovePoint(DnaDrawing drawing) { if (Points.Count > Settings.ActivePointsPerPolygonMin) { if (drawing.PointCount > Settings.ActivePointsMin) { int index = Tools.GetRandomNumber(0, Points.Count); Points.RemoveAt(index); drawing.SetDirty(); } } }
private void AddPoint(DnaDrawing drawing) { if (Points.Count < Settings.ActivePointsPerPolygonMax) { if (drawing.PointCount < Settings.ActivePointsMax) { var newPoint = new DnaPoint(); int index = Tools.GetRandomNumber(1, Points.Count - 1); DnaPoint prev = Points[index - 1]; DnaPoint next = Points[index]; newPoint.X = (prev.X + next.X)/2; newPoint.Y = (prev.Y + next.Y)/2; Points.Insert(index, newPoint); drawing.SetDirty(); } } }
private void RemovePoint(DnaDrawing drawing, JobInfo info) { if (Points.Count > info.Settings.PointsPerPolygonMin) { if (drawing.PointCount > info.Settings.PointsMin) { int index = info.GetRandomNumber(0, Points.Count); Points.RemoveAt(index); drawing.SetDirty(); } } }