Beispiel #1
0
        //
        // Given a set of points, can we construct any shape?
        // If we can construct a shape, we then have a resultant mess...
        //
        public static List <FigSynthProblem> SubtractShape(Figure outerShape, ShapeType type)
        {
            List <FigSynthProblem> problems = new List <FigSynthProblem>();

            List <Connection> conns  = outerShape.MakeAtomicConnections();
            List <Point>      points = outerShape.allComposingPoints;

            switch (type)
            {
            case ShapeType.TRIANGLE:
                problems = Triangle.SubtractShape(outerShape, conns, points);
                break;

            case ShapeType.ISOSCELES_TRIANGLE:
                problems = IsoscelesTriangle.SubtractShape(outerShape, conns, points);
                break;

            case ShapeType.RIGHT_TRIANGLE:
                problems = RightTriangle.SubtractShape(outerShape, conns, points);
                break;

            //case ShapeType.ISO_RIGHT_TRIANGLE:
            //    problems =  Triangle.SubtractShape(outerShape, conns, points);

            case ShapeType.EQUILATERAL_TRIANGLE:
                problems = EquilateralTriangle.SubtractShape(outerShape, conns, points);
                break;

            case ShapeType.KITE:
                problems = Kite.SubtractShape(outerShape, conns, points);
                break;

            case ShapeType.QUADRILATERAL:
                problems = Quadrilateral.SubtractShape(outerShape, conns, points);
                break;

            case ShapeType.TRAPEZOID:
                problems = Trapezoid.SubtractShape(outerShape, conns, points);
                break;

            case ShapeType.ISO_TRAPEZOID:
                problems = IsoscelesTrapezoid.SubtractShape(outerShape, conns, points);
                break;

            case ShapeType.PARALLELOGRAM:
                problems = Parallelogram.SubtractShape(outerShape, conns, points);
                break;

            case ShapeType.RECTANGLE:
                problems = Rectangle.SubtractShape(outerShape, conns, points);
                break;

            case ShapeType.RHOMBUS:
                problems = Rhombus.SubtractShape(outerShape, conns, points);
                break;

            case ShapeType.SQUARE:
                problems = Square.SubtractShape(outerShape, conns, points);
                break;

            case ShapeType.CIRCLE:
                problems = Circle.SubtractShape(outerShape, conns, points);
                break;

            case ShapeType.SECTOR:
                problems = Sector.SubtractShape(outerShape, conns, points);
                break;
            }

            return(problems);
        }
Beispiel #2
0
        public static List <FigSynthProblem> AddShape(Figure outerShape, ShapeType type)
        {
            List <FigSynthProblem> problems = new List <FigSynthProblem>();

            switch (type)
            {
            case ShapeType.TRIANGLE:
                problems.AddRange(Triangle.AppendShape(outerShape, outerShape.GetCompleteSideSegments()));
                break;

            case ShapeType.ISOSCELES_TRIANGLE:
                problems.AddRange(IsoscelesTriangle.AppendShape(outerShape, outerShape.GetCompleteSideSegments()));
                break;

            case ShapeType.RIGHT_TRIANGLE:
                problems.AddRange(RightTriangle.AppendShape(outerShape, outerShape.GetCompleteSideSegments()));
                break;
            //case ShapeType.ISO_RIGHT_TRIANGLE:
            //    problems.AddRange(Triangle.AppendShape(points);

            case ShapeType.EQUILATERAL_TRIANGLE:
                problems.AddRange(EquilateralTriangle.AppendShape(outerShape, outerShape.GetCompleteSideSegments()));
                break;

            case ShapeType.KITE:
                problems.AddRange(Kite.AppendShape(outerShape, outerShape.GetCompleteSideSegments()));
                break;

            case ShapeType.QUADRILATERAL:
                problems.AddRange(Quadrilateral.AppendShape(outerShape, outerShape.GetCompleteSideSegments()));
                break;

            case ShapeType.TRAPEZOID:
                problems.AddRange(Trapezoid.AppendShape(outerShape, outerShape.GetCompleteSideSegments()));
                break;

            case ShapeType.ISO_TRAPEZOID:
                problems.AddRange(IsoscelesTrapezoid.AppendShape(outerShape, outerShape.GetCompleteSideSegments()));
                break;

            case ShapeType.PARALLELOGRAM:
                problems.AddRange(Parallelogram.AppendShape(outerShape, outerShape.GetCompleteSideSegments()));
                break;

            case ShapeType.RECTANGLE:
                problems.AddRange(Rectangle.AppendShape(outerShape, outerShape.GetCompleteSideSegments()));
                break;

            case ShapeType.RHOMBUS:
                problems.AddRange(Rhombus.AppendShape(outerShape, outerShape.GetCompleteSideSegments()));
                break;

            case ShapeType.SQUARE:
                problems.AddRange(Square.AppendShape(outerShape, outerShape.GetCompleteSideSegments()));
                break;

            case ShapeType.CIRCLE:
                problems.AddRange(Circle.AppendShape(outerShape, outerShape.GetCompleteSideSegments()));
                break;

            case ShapeType.SECTOR:
                problems.AddRange(Sector.AppendShape(outerShape, outerShape.GetCompleteSideSegments()));
                break;
            }

            return(problems);
        }
 //
 // An isosceles trapezoid can use an equation to find the height based on the bases and the side lengths.
 //
 public static void HandleIsoscelesTrapezoid(KnownMeasurementsAggregator known, IsoscelesTrapezoid isoTrap)
 {
     isoTrap.CalculateHeight(known);
 }