Beispiel #1
0
        public static List <GenericInstantiator.EdgeAggregator> GenerateCorrespondingParts(List <KeyValuePair <Point, Point> > pairs, List <GroundedClause> antecedent, Hypergraph.EdgeAnnotation givenAnnotation)
        {
            List <EdgeAggregator> newGrounded = new List <EdgeAggregator>();

            // If pairs is populated, we have a Similiarity
            if (!pairs.Any())
            {
                return(newGrounded);
            }

            // Create the similarity between the triangles
            List <Point> triangleOne = new List <Point>();
            List <Point> triangleTwo = new List <Point>();

            foreach (KeyValuePair <Point, Point> pair in pairs)
            {
                triangleOne.Add(pair.Key);
                triangleTwo.Add(pair.Value);
            }

            GeometricSimilarTriangles simTris = new GeometricSimilarTriangles(new Triangle(triangleOne), new Triangle(triangleTwo));

            newGrounded.Add(new EdgeAggregator(antecedent, simTris, givenAnnotation));

            // Add all the corresponding parts as new Similar clauses
            newGrounded.AddRange(SimilarTriangles.GenerateComponents(simTris, triangleOne, triangleTwo));

            return(newGrounded);
        }
Beispiel #2
0
 public EdgeAggregator(List <ConcreteAST.GroundedClause> antes, ConcreteAST.GroundedClause c, Hypergraph.EdgeAnnotation ann)
 {
     antecedent = new List <ConcreteAST.GroundedClause>(antes);
     consequent = c;
     annotation = ann;
 }