Esempio n. 1
0
def from_points_edges(points, eds):
    """ eds = [[p0, p1, cleft, cright, btype], ....] """
    npoints = ct.c_int(len(points))
    points = list_to_c(concat(points), float)
    neds = ct.c_int(len(eds))
    eds = list_to_c(concat(eds), int)
    ret = ct.c_void_p()

    ccall(cport.g2_from_points_edges, npoints, points, neds, eds,
          ct.byref(ret))

    return ret
Esempio n. 2
0
File: c2.py Progetto: cescjf/HybMesh
def closest_points(obj, pts, proj):
    npts = ct.c_int(len(pts))
    pts = list_to_c(concat(pts), 'float')
    ret = (ct.c_double * len(pts))()
    ccall(cport.c2_closest_points, obj, npts, pts, proj, ret)
    it = iter(ret)
    return [[a, b] for a, b in zip(it, it)]
Esempio n. 3
0
File: c2.py Progetto: cescjf/HybMesh
def contour_partition(obj, step, algo, a0, keepbnd,
                      nedges, crosses, keeppts, start, end):
    """ step: [double]*n, where n dependes on algo:
            algo = "const" => n = 1,
            algo = "ref_points" => n = 3*k
            algo = "ref_weights/lengths" => n = 2*k
        nedges: None or forced number of resulting edges
    """
    # options
    nstep = ct.c_int(len(step))
    step = list_to_c(step, "float")
    a0 = ct.c_double(a0)
    keepbnd = ct.c_int(keepbnd)
    nedges = ct.c_int(nedges) if nedges is not None else ct.c_int(-1)
    ncrosses = ct.c_int(len(crosses))
    crosses = list_to_c(crosses, "void*")
    nkeeppts = ct.c_int(len(keeppts))
    keeppts = list_to_c(concat(keeppts), float)
    start = list_to_c(start, float) if start is not None else None
    end = list_to_c(end, float) if end is not None else None

    # call
    ret = ct.c_void_p()
    ccall(cport.c2_partition, obj, algo,
          nstep, step, a0, keepbnd, nedges,
          ncrosses, crosses,
          nkeeppts, keeppts,
          start, end,
          ct.byref(ret))
    return ret
Esempio n. 4
0
def build_tri_grid(verts, nedge, bnds):
    verts = list_to_c(concat(verts), float)
    nedge = ct.c_int(nedge)
    bnds = list_to_c(supplement(bnds, 3), int)
    ret = ct.c_void_p()
    ccall(cport.g2_tri_grid, verts, nedge, bnds, ct.byref(ret))
    return ret
Esempio n. 5
0
File: c2.py Progetto: cescjf/HybMesh
def build_from_points(pts, force_closed, bnds):
    bnds = list_to_c(supplement(bnds, len(pts)), int)
    force_closed = ct.c_int(force_closed)
    npts = ct.c_int(len(pts))
    pts = list_to_c(concat(pts), float)
    ret = ct.c_void_p()
    ccall(cport.c2_frompoints, npts, pts, bnds, force_closed, ct.byref(ret))
    return ret
Esempio n. 6
0
File: c2.py Progetto: cescjf/HybMesh
def spline(pts, bnds, nedges):
    bnds = list_to_c(supplement(bnds, len(pts)), int)
    npts = ct.c_int(len(pts))
    pts = list_to_c(concat(pts), float)
    nedges = ct.c_int(nedges)
    ret = ct.c_void_p()
    ccall(cport.c2_spline, npts, pts, nedges, bnds, ct.byref(ret))
    return ret
Esempio n. 7
0
def map_grid(base_obj, target_obj, base_points, target_points, snap,
             bt_from_contour, algo, is_reversed, rinvalid, cb):
    npoints = min(len(base_points), len(target_points))
    base_points = base_points[:npoints]
    target_points = target_points[:npoints]
    npoints = ct.c_int(npoints)
    base_points = list_to_c(concat(base_points), float)
    target_points = list_to_c(concat(target_points), float)
    bt_from_contour = ct.c_int(bt_from_contour)
    is_reversed = ct.c_int(is_reversed)
    rinvalid = ct.c_int(rinvalid)
    ret = ct.c_void_p()

    ccall_cb(cport.g2_map_grid, cb, base_obj, target_obj, npoints, base_points,
             target_points, snap, bt_from_contour, algo, is_reversed, rinvalid,
             ct.byref(ret))
    return ret
Esempio n. 8
0
def from_points_cells(points, cls, bedges):
    """
    cls = [[p1, p2, p3, ...], [p1, p2, ....]]
    bedges: [[p1, p2, btype], ...]
    """
    npoints = ct.c_int(len(points))
    points = list_to_c(concat(points), float)
    ncells = ct.c_int(len(cls))
    cellsizes = list_to_c(map(len, cls), int)
    cellvert = list_to_c(concat(cls), int)
    nbedges = ct.c_int(len(bedges))
    bedges = list_to_c(concat(bedges), int)
    ret = ct.c_void_p()

    ccall(cport.g2_from_points_cells, npoints, points, ncells, cellsizes,
          cellvert, nbedges, bedges, ct.byref(ret))

    return ret
Esempio n. 9
0
File: g3.py Progetto: cescjf/HybMesh
def revolve(g2obj, vec, phivals, center_tri, bt1, bt2):
    vec = list_to_c(concat(vec), float)
    nphivals = ct.c_int(len(phivals))
    phivals = list_to_c(phivals, float)
    center_tri = ct.c_int(center_tri)
    bt1 = ct.c_int(bt1)
    bt2 = ct.c_int(bt2)
    ret = ct.c_void_p()
    ccall(cport.g3_revolve, g2obj, vec, nphivals, phivals, center_tri, bt1,
          bt2, ct.byref(ret))
    return ret
Esempio n. 10
0
File: g3.py Progetto: cescjf/HybMesh
def tetrahedral_fill(sobjs, constrs, pts, pt_sizes, cb):
    nsobjs = ct.c_int(len(sobjs))
    sobjs = list_to_c(sobjs, 'void*')
    nconstrs = ct.c_int(len(constrs))
    constrs = list_to_c(constrs, 'void*')
    npts = ct.c_int(len(pts))
    pts = list_to_c(concat(pts), float)
    pt_sizes = list_to_c(pt_sizes, float)
    ret = ct.c_void_p()
    ccall_cb(cport.g3_tetrahedral_fill, cb, nsobjs, sobjs, nconstrs, constrs,
             npts, pts, pt_sizes, ct.byref(ret))
    return ret
Esempio n. 11
0
def closest_points(obj, pts, proj):
    npts = ct.c_int(len(pts))
    pts = list_to_c(concat(pts), 'float')
    ret = (ct.c_double * len(pts))()
    if proj == "vertex":
        proj = ct.c_int(0)
    elif proj == "edge":
        proj = ct.c_int(1)
    else:
        raise ValueError
    ccall(cport.g2_closest_points, obj, npts, pts, proj, ret)
    it = iter(ret)
    return [[a, b] for a, b in zip(it, it)]
Esempio n. 12
0
File: c2.py Progetto: cescjf/HybMesh
def extract_subcontours(obj, plist):
    nplist = ct.c_int(len(plist))
    plist = list_to_c(concat(plist), float)
    ret = (ct.c_void_p * (nplist.value - 1))()
    ccall(cport.c2_extract_subcontours, obj, nplist, plist, ret)
    return list(ret)