Пример #1
0
        public static void DrawTriangle(FoxDraw foxDraw, double origox, double origoy, double size, double count)
        {
            if (size > 0)
            {
                if (count < 10)
                {
                    foxDraw.StrokeColor(Colors.Black);
                    foxDraw.FillColor(Colors.White);

                    var points = new List <Point>();
                    points.Add(new Point(origox, origoy));
                    points.Add(new Point(origox + size, origoy));
                    points.Add(new Point(origox + (size / 2), origoy + (Math.Sqrt(3) / 2 * size)));

                    foxDraw.DrawPolygon(points);
                    count++;

                    DrawTriangle(foxDraw, origox, origoy, (size / 2), count);
                    DrawTriangle(foxDraw, origox + (size / 2), origoy, (size / 2), count);
                    DrawTriangle(foxDraw, origox + (size / 4), (origoy + (Math.Sqrt(3) / 2 * size) / 2), (size / 2), count);
                }
                else
                {
                    return;
                }
            }
            else
            {
                return;
            }
        }
Пример #2
0
        static void DrawTriangle(FoxDraw foxDraw, double startx, double starty, double endx, double endy, int count)
        {
            foxDraw.StrokeColor(Colors.Black);
            foxDraw.FillColor(Colors.White);
            foxDraw.BackgroundColor(Colors.Gray);

            //var points = new List<Point>();
            //points.Add(new Point(startx, starty));
            //points.Add(new Point(endx, starty));
            //points.Add(new Point(startx + (endx - startx) / 2, endy));
            //foxDraw.DrawPolygon(points);

            //var points2 = new List<Point>();
            //points2.Add(new Point(startx + (endx - startx) / 2, starty));
            //points2.Add(new Point(startx + (endx - startx) / 4, starty + (endy - starty) / 2));
            //points2.Add(new Point(startx + (endx - startx) * 3 / 4, starty + (endy - starty) / 2));
            foxDraw.DrawPolygon(points);

            count--;
            if (count > 0)
            {
                DrawTriangle(foxDraw, startx + (endx - startx) / 2, starty, endx, starty + (endy - starty) / 2, count);
                DrawTriangle(foxDraw, startx, starty, startx + (endx - startx) / 2, starty + (endy - starty) / 2, count);
                DrawTriangle(foxDraw, startx + (endx - startx) / 4, starty + (endy - starty) / 2, startx + (endx - startx) * 3 / 4, endy, count);
            }
        }
Пример #3
0
        public static void DrawTriangles(FoxDraw triangles, int size, int x, int y, int level, Color color, Random random)
        {
            if (level > 0)
            {
                triangles.StrokeColor(color);
                Point top   = new Point(x + size / 2, y);
                Point right = new Point(x + size / 3 * 4, y + size / 2);
                Point left  = new Point(x + size / 4, y + size / 2);


                triangles.DrawLine(x + size / 2, y, x + size / 4 * 3, y + size / 2);
                triangles.DrawLine(x + size / 4 * 3, y + size / 2, x + size / 4, y + size / 2);
                triangles.DrawLine(x + size / 4, y + size / 2, x + size / 2, y);

                FoxDraw.DrawPolygon(top, right, left);


                // triangles.FillColor(RandomColor(random));

                // TODO: nagy haromszog

                triangles.DrawLine(x, y, x + size, y);
                triangles.DrawLine(x + size, y, x + size / 2, y + size);
                triangles.DrawLine(x + size / 2, y + size, x, y);

                DrawTriangles(triangles, size / 2, x, y, level - 1, color, random);
                DrawTriangles(triangles, size / 2, x + size / 2, y, level - 1, color, random);
                DrawTriangles(triangles, size / 2, x + size / 4, y + size / 2, level - 1, color, random);
            }
        }
Пример #4
0
        public void TriangleDrawer(FoxDraw foxDraw, float levelInput, float widthValue, float heightValue, float xInput, float yInput)
        {
            if (levelInput == 0)
            {
                return;
            }
            else
            {
                var pointsOfTriangle = new List <Point>();

                pointsOfTriangle.Add(new Point(xInput, yInput));
                pointsOfTriangle.Add(new Point(xInput + widthValue, yInput));
                pointsOfTriangle.Add(new Point(xInput + widthValue / 2, yInput + heightValue));

                foxDraw.DrawPolygon(pointsOfTriangle);

                float width  = widthValue / 2;
                float height = heightValue / 2;

                float x0 = xInput;
                float x1 = xInput + width;
                float x2 = xInput + width / 2;

                float y0 = yInput;
                float y2 = yInput + height;

                TriangleDrawer(foxDraw, levelInput - 1, width, height, x0, y0);
                TriangleDrawer(foxDraw, levelInput - 1, width, height, x1, y0);
                TriangleDrawer(foxDraw, levelInput - 1, width, height, x2, y2);
            }
        }
Пример #5
0
        static void DrawTriangles(FoxDraw foxDraw, int sideLength, int baseLineY, int resolution)
        {
            Point a = new Point(50, baseLineY);
            Point b = new Point(50 + sideLength, baseLineY);
            Point c = new Point(50 + sideLength / 2, baseLineY - sideLength * 0.866);

            var points = new List <Point>()
            {
                a, b, c
            };

            foxDraw.FillColor(Colors.White);
            foxDraw.DrawPolygon(points);
            double x1 = a.X;
            double y1 = a.Y;
            double x2 = a.X;
            double y2 = a.Y;

            for (int i = 1; i < resolution; i++)
            {
                x1 = (i * a.X + (resolution - i) * c.X) / resolution;
                y1 = (i * a.Y + (resolution - i) * c.Y) / resolution;
                x2 = (i * a.X + (resolution - i) * b.X) / resolution;
                y2 = (i * a.Y + (resolution - i) * b.Y) / resolution;
                foxDraw.DrawLine(x1, y1, x2, y2);
            }

            x1 = c.X;
            y1 = c.Y;
            x2 = c.X;
            y2 = c.Y;

            for (int i = 1; i < resolution; i++)
            {
                x1 = (i * c.X + (resolution - i) * a.X) / resolution;
                y1 = (i * c.Y + (resolution - i) * a.Y) / resolution;
                x2 = (i * c.X + (resolution - i) * b.X) / resolution;
                y2 = (i * c.Y + (resolution - i) * b.Y) / resolution;
                foxDraw.DrawLine(x1, y1, x2, y2);
            }

            x1 = b.X;
            y1 = b.Y;
            x2 = b.X;
            y2 = b.Y;

            for (int i = 1; i < resolution; i++)
            {
                x1 = (i * b.X + (resolution - i) * a.X) / resolution;
                y1 = (i * b.Y + (resolution - i) * a.Y) / resolution;
                x2 = (i * b.X + (resolution - i) * c.X) / resolution;
                y2 = (i * b.Y + (resolution - i) * c.Y) / resolution;
                foxDraw.DrawLine(x1, y1, x2, y2);
            }
        }
Пример #6
0
        public static void DrawGreenPolygon2(FoxDraw foxDraw, double x, double y, double triangleSide, double triangleheight)
        {
            var points = new List <Point>();

            points.Add(new Point(x, y));
            points.Add(new Point(x + triangleSide / 2, y + triangleheight));
            points.Add(new Point(x - triangleSide, y));


            foxDraw.FillColor(Colors.Gray);
            foxDraw.DrawPolygon(points);
        }
Пример #7
0
        public static void DrawGreenPolygon(FoxDraw foxDraw, double z, double a, double triangleSide, double triangleheight)
        {
            var points = new List <Point>();

            points.Add(new Point(z, a));
            points.Add(new Point(z + triangleSide, a));
            points.Add(new Point(z - triangleSide / 2, a + triangleheight));


            foxDraw.FillColor(Colors.Gray);
            foxDraw.DrawPolygon(points);
        }
Пример #8
0
        private void DrawOneTrianle(Point startPoint, double sizeOfTriangle)
        {
            double halfOfSide       = sizeOfTriangle / 2;
            double heightOfTriangle = Math.Sqrt(Math.Pow(sizeOfTriangle, 2) - Math.Pow(halfOfSide, 2));
            var    points           = new List <Point>();

            points.Add(new Point(startPoint.X, startPoint.Y));
            points.Add(new Point(startPoint.X + halfOfSide, startPoint.Y + heightOfTriangle));
            points.Add(new Point(startPoint.X - halfOfSide, startPoint.Y + heightOfTriangle));
            foxDraw.StrokeColor(Colors.Red);
            foxDraw.FillColor(Colors.Transparent);
            foxDraw.DrawPolygon(points);
        }
        private void DrawTriangle(double x, double y, double size, int level, FoxDraw foxDraw)
        {
            if (level == 0)
            {
                return;
            }
            // upside down triangle
            double halfOfSide = size / 2;
            //double twoThirds = 2 * halfOfSide;
            var leftTop  = new Point(x, y);
            var rightTop = new Point(x + size, y);
            var heightReversedTriangle = Math.Sqrt((size * size) - (Math.Pow(0.5 * size, 2)));
            var bottom           = new Point(x + halfOfSide, y + heightReversedTriangle);
            var bottomUpTriangle = new List <Point>()
            {
                leftTop, rightTop, bottom
            };

            foxDraw.DrawPolygon(bottomUpTriangle);
            // right way up triangle
            var heightUpTriangle = Math.Sqrt((halfOfSide * halfOfSide) - (Math.Pow(0.5 * halfOfSide, 2)));
            var bottomLeft       = new Point(x + 0.5 * halfOfSide, y + heightUpTriangle);
            var bottomRight      = new Point(x + 0.5 * halfOfSide + halfOfSide, y + heightUpTriangle);
            var top           = new Point(x + halfOfSide, y);
            var topUpTriangle = new List <Point>()
            {
                bottomLeft, bottomRight, top
            };

            foxDraw.DrawPolygon(topUpTriangle);

            level--;
            foxDraw.SetFillColor(RandomColor());
            // DrawTriangle(x, y, size * 0.5, level, foxDraw);
            foxDraw.SetFillColor(RandomColor());
//DrawTriangle(x + halfOfSide, y, size * 0.5, level, foxDraw);
            foxDraw.SetFillColor(RandomColor());
            DrawTriangle(x + halfOfSide * 0.5, y + heightUpTriangle, size * 0.5, level, foxDraw);
        }
Пример #10
0
        public void Triangles(FoxDraw draw, double x, double y, double size, int depth)
        {
            if (depth == 0)
            {
                return;
            }
            var triangleAngles = new List <Point>();

            triangleAngles.Add(new Point(x, y));
            triangleAngles.Add(new Point(x + size, y));
            triangleAngles.Add(new Point(x + size / 2, y + size));

            draw.DrawPolygon(triangleAngles);

            Triangles(draw, x, y, size / 2, depth - 1);
            Triangles(draw, x + size / 2, y, size / 2, depth - 1);
            Triangles(draw, x + size / 4, y + size / 2, size / 2, depth - 1);
        }