/// <summary> /// Dibuja los triángulos /// </summary> /// <returns>La colección de triángulos</returns> public Sierpinski[] GetTriangles() { Point2d MidAB = MidPoint(A, B), MidBC = MidPoint(B, C), MidAC = MidPoint(A, C); Sierpinski t1 = new Sierpinski(A, MidAB, MidAC), t2 = new Sierpinski(B, MidAB, MidBC), t3 = new Sierpinski(C, MidAC, MidBC); t1.depth = depth + 1; t2.depth = depth + 1; t3.depth = depth + 1; return(new Sierpinski[] { t1, t2, t3 }); }
/// <summary> /// Genera los triangulos hasta llegar al nivel de profundidad deseado. /// </summary> /// <param name="t">El triángulo.</param> /// <param name="ents">La colección de entidades dibujadas.</param> /// <param name="maxDepth">La profundidad máxima.</param> public void Draw(Sierpinski t, ref List <Entity> ents, int maxDepth = 5) { if (t.depth > maxDepth) { return; } else { ents.Add(t.Triangle); foreach (Sierpinski tri in t.GetTriangles()) { Draw(tri, ref ents, maxDepth); } } }
public void DrawTriangle() { Point3d insPt; Point3d endPt; int order; if (Lab2.Selector.Point("Punto de inserción", out insPt) && Lab2.Selector.Point("El tamaño del triangulo", out endPt, insPt) && Lab2.Selector.Integer("El orden del triangulo", out order, 3)) { Sierpinski triangle = new Sierpinski(insPt, insPt.DistanceTo(endPt)); List <Entity> ents = new List <Entity>(); triangle.Draw(triangle, ref ents, order); TransactionWrapper tr = new TransactionWrapper(); tr.Run(DrawGeometry, ents.ToArray()); Editor ed = Application.DocumentManager.MdiActiveDocument.Editor; ed.WriteMessage("Total de triangulos", ents.Count); } }