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; } }
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); } }
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); } }
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); } }
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); } }
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); }
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); }
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); }
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); }