예제 #1
0
        public override void Init()
        {
            origin = new DnaPoint();
            origin.Init(tool);

            Brush = new DnaBrush();
            Brush.Init(tool);

            rx = ry = tool.GetRandomNumber(0, Settings.ActiveMaxCircleRadius);
            rotation = 0;
        }
예제 #2
0
        public new void Init()
        {
            origin = new DnaPoint();
            origin.Init(tool);

            Brush = new DnaBrush();
            Brush.Init(tool);

            rx = ry = tool.GetRandomNumber(0.0, 5.0);
            rotation = 0;
        }
예제 #3
0
        public virtual void Init()
        {
            origin = new DnaPoint();
            origin.Init(tool);

            Brush = new DnaBrush();
            Brush.Init(tool);

            rx = tool.GetRandomNumber(0, Settings.ActiveMaxCircleRadius);
            ry = tool.GetRandomNumber(0, Settings.ActiveMaxCircleRadius);
            rotation = tool.GetRandomNumber(-99.0, 99.0);
        }
예제 #4
0
        public static void Mutate(this DnaPoint dnaPoint, DnaDrawing dnaDrawing)
        {
            if (Tools.WillMutate(Settings.ActiveMovePointMaxMutationRate))
            {
                dnaPoint.X = Tools.GetRandomNumber(0, dnaDrawing.Width);
                dnaPoint.Y = Tools.GetRandomNumber(0, dnaDrawing.Height);
                dnaDrawing.SetDirty();
            }

            if (Tools.WillMutate(Settings.ActiveMovePointMidMutationRate))
            {
                dnaPoint.X =
                    MathUtils.Clamp(
                        dnaPoint.X +
                        Tools.GetRandomNumber(-Settings.ActiveMovePointRangeMid, Settings.ActiveMovePointRangeMid), 0,
                        dnaDrawing.Width);

                dnaPoint.Y =
                    MathUtils.Clamp(
                        dnaPoint.Y +
                        Tools.GetRandomNumber(-Settings.ActiveMovePointRangeMid, Settings.ActiveMovePointRangeMid), 0,
                        dnaDrawing.Height);

                dnaDrawing.SetDirty();
            }

            if (Tools.WillMutate(Settings.ActiveMovePointMinMutationRate))
            {
                dnaPoint.X =
                    MathUtils.Clamp(
                        dnaPoint.X +
                        Tools.GetRandomNumber(-Settings.ActiveMovePointRangeMin, Settings.ActiveMovePointRangeMin), 0,
                        dnaDrawing.Width);

                dnaPoint.Y =
                    MathUtils.Clamp(
                        dnaPoint.Y +
                        Tools.GetRandomNumber(-Settings.ActiveMovePointRangeMin, Settings.ActiveMovePointRangeMin), 0,
                        dnaDrawing.Height);

                dnaDrawing.SetDirty();
            }
        }
예제 #5
0
        public void Init()
        {
            Points = new List<DnaPoint>();

            //int count = Tools.GetRandomNumber(3, 3);
            var origin = new DnaPoint();
            origin.Init(tool);

            for (int i = 0; i < Settings.ActivePointsPerPolygonMin; i++)
            {
                var point = new DnaPoint();
                point.X = Math.Min(Math.Max(0, origin.X + tool.GetRandomNumber(-3, 3)), Tools.MaxWidth);
                point.Y = Math.Min(Math.Max(0, origin.Y + tool.GetRandomNumber(-3, 3)), Tools.MaxHeight);

                Points.Add(point);
            }

            Brush = new DnaBrush();
            Brush.Init(tool);
        }
예제 #6
0
        private static bool AddPoint(this DnaPolygon dnaPolygon, DnaDrawing drawing)
        {
            if (dnaPolygon.Points.Count < Settings.ActivePointsPerPolygonMax)
            {
                if (drawing.PointCount < Settings.ActivePointsMax)
                {
                    int index = Tools.GetRandomNumber(1, dnaPolygon.Points.Count - 1);

                    DnaPoint prev = dnaPolygon.Points[index - 1];
                    DnaPoint next = dnaPolygon.Points[index];

                    var newPointX = (prev.X + next.X) / 2;
                    var newPointY = (prev.Y + next.Y) / 2;

                    var newPoint = new DnaPoint(newPointX, newPointY);

                    dnaPolygon.Points.Insert(index, newPoint);

                    return(true);
                }
            }
            return(false);
        }
        private static bool AddPoint(this DnaPolygon dnaPolygon, DnaDrawing drawing)
        {
            if (dnaPolygon.Points.Count < Settings.ActivePointsPerPolygonMax)
            {
                if (drawing.PointCount < Settings.ActivePointsMax)
                {
                    int index = Tools.GetRandomNumber(1, dnaPolygon.Points.Count - 1);

                    DnaPoint prev = dnaPolygon.Points[index - 1];
                    DnaPoint next = dnaPolygon.Points[index];

                    var newPointX = (prev.X + next.X)/2;
                    var newPointY = (prev.Y + next.Y)/2;

                    var newPoint = new DnaPoint(newPointX, newPointY);

                    dnaPolygon.Points.Insert(index, newPoint);

                    return true;
                }
            }
            return false;
        }
예제 #8
0
        private void AddPoint(DnaDrawing drawing)
        {
            if (Points.Count < Settings.ActivePointsPerPolygonMax)
            {
                var newPoint = new DnaPoint();

                int index = tool.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();
            }
        }