Exemplo n.º 1
0
def line_problem_2d_1():
    """A problem with a Line and 1 CoincicentConstraint"""
    problem = GeometricProblem(dimension=2)
    problem.add_variable(Point('p1'),vector([3.0, 2.0]))
    problem.add_variable(Line('l1'),vector([0.0, 0.0, 1.0, 1.0]))
    problem.add_constraint(CoincidenceConstraint(Point('p1'), Line('l1')))
    return problem 
Exemplo n.º 2
0
def line_problem_3d_3():
    """A problem with a Line and a 3 CoincicentConstraints"""
    problem = GeometricProblem(dimension=3)
    problem.add_variable(Point('p1'),vector([3.0, 2.0, 1.0]))
    problem.add_variable(Point('p2'),vector([1.0, 1.0, 1.0]))
    problem.add_variable(Line('l1'),vector([0.0, 0.0, 0.0, 1.0, 1.0, 1.0]))
    problem.add_constraint(CoincidenceConstraint(Point('p1'), Line('l1')))
    problem.add_constraint(CoincidenceConstraint(Point('p2'), Line('l1')))
    problem.add_constraint(DistanceConstraint(Point('p1'), Point('p2'), 5.0))
    problem.add_variable(Point('p3'),vector([0.0, 0.0, 1.0]))
    problem.add_constraint(CoincidenceConstraint(Point('p3'), Line('l1')))
    problem.add_constraint(DistanceConstraint(Point('p1'), Point('p3'), 8.0))
    return problem 
Exemplo n.º 3
0
    def add_mates(self, layers, joints):
        print(joints)
        for jointlayer in joints:
            print(jointlayer)
            for jp in joints[jointlayer]:
                for l in layers:
                    print(l.name)
                    #Eliminate duplicates
                    straight_pairs = []
                    [
                        straight_pairs.append(x) for x in l.straight_pairs
                        if x not in straight_pairs
                    ]

                    #Need at least 3 points to calculate plane
                    if straight_pairs < 3:
                        pass
                    #print(l)
                    p_p = []
                    p_ln = ''
                    i = 0
                    for p in straight_pairs:
                        # print(p)
                        #path4581_p1
                        layername = l.name + '_p' + str(i)

                        #joint associations
                        if (self.encloses(p, jp)):
                            print(jointlayer, l.name, i, p)
                            self.add_joint(jointlayer, layername)
                            #joint_assoc[jointlayer].append(l.name)
                        p_p = p
                        p_ln = layername
                        i += 1

                    #Connected joints
                    # p.append(0.0)
            print(self.connectedJoints)
            for n in self.connectedJoints:
                #todo more than two joints in a
                j = self.connectedJoints[n]
                print(j)
                self.solver.add_constraint(
                    CoincidenceConstraint(Point(j[0]), Point(j[1])))