from oricrete.folding.equality_constraint import \ EqConsDevelopability if __name__ == '__main__': # X-Y Plane # Simple test right upper sector cp = CreasePattern(nodes = [[0, 0, 0], [1.0, 0, 0], [0, 1, 0]] ) uf = EqConsDevelopability(cp, connectivity = [(0, [1, 2])]) u = np.zeros_like(cp.nodes).flatten() print uf.get_G(u, 0) # should be [0,0,0,0,-,0,-,0,0] print uf.get_G_du(u, 0) # Simple test left upper sector cp = CreasePattern(nodes = [[0, 0, 0], [0, 1, 0], [-1.0, 0, 0]] ) uf = EqConsDevelopability(cp, connectivity = [(0, [1, 2])])
# del cp.eqcons['dc'] u0 = cp.generate_X0() u_no_constraint = cp.solve(u0 + 1e-6) cp.eqcons["cl"] = cl u_constant_length = cp.solve(u0 + 1e-4) # 3 delete the constant length del cp.eqcons["cl"] connectivity = [(vertex, neighbors) for vertex, neighbors in zip(cp.interior_vertices, cp.cycled_neighbors.T)] print "connectivity", connectivity uf = EqConsDevelopability(cp, connectivity=connectivity) cp.eqcons["uf"] = uf # the derivatives are not correct cp.use_G_du = False u_unfoldable = cp.solve(u0 + 1e-6, acc=1e-4) # =========================================================================== # Unfolding # =========================================================================== # new_nodes = cp.get_new_nodes(u_unfoldable) cp2 = CreasePattern( nodes=new_nodes, crease_lines=cp.crease_lines, facets=cp.facets,