private static List<EdgeAggregator> InstantiateToTrapezoid(Quadrilateral quad, Parallel parallel) { List<EdgeAggregator> newGrounded = new List<EdgeAggregator>(); // Does this parallel set apply to this quadrilateral? if (!quad.HasOppositeParallelSides(parallel)) return InstantiateToTrapezoidSubsegments(quad, parallel); // // The other set of sides should NOT be parallel (that's a parallelogram) // List<Segment> otherSides = quad.GetOtherSides(parallel); if (otherSides.Count != 2) { throw new ArgumentException("Expected TWO sides returned from a quadrilateral / parallel relationship: " + quad + " " + parallel); } if (otherSides[0].IsParallelWith(otherSides[1])) return newGrounded; return MakeTrapezoid(quad, parallel); }
private static List<EdgeAggregator> InstantiateToParallelogram(Quadrilateral quad, Parallel parallel1, Parallel parallel2) { List<EdgeAggregator> newGrounded = new List<EdgeAggregator>(); // Does this paralle set apply to this triangle? if (!quad.HasOppositeParallelSides(parallel1)) return newGrounded; if (!quad.HasOppositeParallelSides(parallel2)) return newGrounded; // // Create the new Parallelogram object // Strengthened newParallelogram = new Strengthened(quad, new Parallelogram(quad)); // For hypergraph List<GroundedClause> antecedent = new List<GroundedClause>(); antecedent.Add(quad); antecedent.Add(parallel1); antecedent.Add(parallel2); newGrounded.Add(new EdgeAggregator(antecedent, newParallelogram, annotation)); return newGrounded; }
private static List<EdgeAggregator> InstantiateToTheorem(Quadrilateral quad, CongruentSegments cs, Parallel parallel) { List<EdgeAggregator> newGrounded = new List<EdgeAggregator>(); // Are the pairs on the opposite side of this quadrilateral? if (!quad.HasOppositeCongruentSides(cs)) return newGrounded; if (!quad.HasOppositeParallelSides(parallel)) return newGrounded; // Do the congruent segments coincide with these parallel segments? if (!parallel.segment1.HasSubSegment(cs.cs1) && !parallel.segment2.HasSubSegment(cs.cs1)) return newGrounded; if (!parallel.segment1.HasSubSegment(cs.cs2) && !parallel.segment2.HasSubSegment(cs.cs2)) return newGrounded; // // Create the new Rhombus object // Strengthened newParallelogram = new Strengthened(quad, new Parallelogram(quad)); // For hypergraph List<GroundedClause> antecedent = new List<GroundedClause>(); antecedent.Add(quad); antecedent.Add(cs); antecedent.Add(parallel); newGrounded.Add(new EdgeAggregator(antecedent, newParallelogram, annotation)); return newGrounded; }