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
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
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])))