예제 #1
0
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,