Exemple #1
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
Exemple #2
0
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
Exemple #3
0
def stripe_grid(obj, partition, tipalgo, bnd, cb):
    npartition = ct.c_int(len(partition))
    partition = list_to_c(partition, float)
    bnd = list_to_c(supplement(bnd, 4), int)
    ret = ct.c_void_p()
    ccall_cb(cport.g2_stripe_grid, cb, obj, npartition, partition, tipalgo,
             bnd, ct.byref(ret))
    return ret
Exemple #4
0
def snap_to_contour(g, c, p1, p2, p3, p4, algo):
    p1 = list_to_c(p1, float)
    p2 = list_to_c(p2, float)
    p3 = list_to_c(p3, float)
    p4 = list_to_c(p4, float)
    ret = ct.c_void_p()
    ccall(cport.g2_snap_to_contour, g, c, p1, p2, p3, p4, algo, ct.byref(ret))
    return ret
Exemple #5
0
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
Exemple #6
0
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
Exemple #7
0
def build_rect_grid(xdata, ydata, bnds):
    nx = ct.c_int(len(xdata))
    xdata = list_to_c(xdata, float)
    ny = ct.c_int(len(ydata))
    ydata = list_to_c(ydata, float)
    bnds = list_to_c(supplement(bnds, 4), 'int')
    ret = ct.c_void_p()
    ccall(cport.g2_rect_grid, nx, xdata, ny, ydata, bnds, ct.byref(ret))
    return ret
Exemple #8
0
def build_ring_grid(p0, rdata, adata, bnds):
    p0 = list_to_c(p0, float)
    nr = ct.c_int(len(rdata))
    rdata = list_to_c(rdata, float)
    na = ct.c_int(len(adata))
    adata = list_to_c(adata, float)
    bnds = list_to_c(supplement(bnds, 2), int)
    ret = ct.c_void_p()
    ccall(cport.g2_ring_grid, p0, nr, rdata, na, adata, bnds, ct.byref(ret))
    return ret
Exemple #9
0
def connect_subcontours(objs, fx, close, shift):
    nobjs = ct.c_int(len(objs))
    objs = list_to_c(objs, "void*")
    nfx = ct.c_int(len(fx))
    fx = list_to_c(fx, int)
    shift = ct.c_int(shift)
    ret = ct.c_void_p()
    ccall(cport.c2_connect_subcontours, nobjs, objs, nfx, fx, shift, close,
          ct.byref(ret))
    return ret
Exemple #10
0
def extrude(g2obj, zvals, bbot, btop, bside=None):
    d2 = g2.dims(g2obj)
    nzvals = ct.c_int(len(zvals))
    zvals = list_to_c(zvals, float)
    bbot = list_to_c(supplement(bbot, d2[2]), int)
    btop = list_to_c(supplement(btop, d2[2]), int)
    bside = ct.c_int(bside if bside is not None else -1)
    ret = ct.c_void_p()
    ccall(cport.g3_extrude, g2obj, nzvals, zvals, bbot, btop, bside,
          ct.byref(ret))
    return ret
Exemple #11
0
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
Exemple #12
0
def build_circ_grid(p0, rdata, adata, istrian, bnd):
    p0 = list_to_c(p0, float)
    nr = ct.c_int(len(rdata))
    rdata = list_to_c(rdata, float)
    na = ct.c_int(len(adata))
    adata = list_to_c(adata, float)
    istrian = ct.c_int(istrian)
    bnd = ct.c_int(bnd)
    ret = ct.c_void_p()
    ccall(cport.g2_circ_grid, p0, nr, rdata, na, adata, istrian, bnd,
          ct.byref(ret))
    return ret
Exemple #13
0
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
Exemple #14
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
Exemple #15
0
def matched_partition(obj, conts, pts, step, infdist, power, a0):
    nconts = ct.c_int(len(conts))
    conts = list_to_c(conts, "void*")
    npts = ct.c_int(len(pts) / 3)
    pts = list_to_c(pts, float)
    step = ct.c_double(step)
    infdist = ct.c_double(infdist)
    power = ct.c_double(power)
    a0 = ct.c_double(a0)

    ret = ct.c_void_p()
    ccall(cport.c2_matched_partition, obj, nconts, conts,
          npts, pts, step, infdist, power, a0,
          ct.byref(ret))
    return ret
Exemple #16
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))()
    ccall(cport.c2_closest_points, obj, npts, pts, proj, ret)
    it = iter(ret)
    return [[a, b] for a, b in zip(it, it)]
Exemple #17
0
def unstructed_fill(domain, constraint, embpts, filler):
    nembpts = ct.c_int(len(embpts) / 3)
    embpts = list_to_c(embpts, float)
    ret = ct.c_void_p()
    ccall(cport.g2_unstructured_fill, domain, constraint, nembpts, embpts,
          filler, ct.byref(ret))
    return ret
Exemple #18
0
def regular_hex_grid(area, crad, strict):
    area = list_to_c(area, float)
    crad = ct.c_double(crad)
    areatype = "hex" if len(area) == 3 else "rect"
    strict = ct.c_int(strict)
    ret = ct.c_void_p()
    ccall(cport.g2_hex_grid, areatype, area, crad, strict, ct.byref(ret))
    return ret
Exemple #19
0
def custom_rectangular_grid(algo, left, bottom, right, top, herw, rinvalid,
                            cb):
    herw = list_to_c(supplement(herw, 4), float)
    rinvalid = ct.c_int(rinvalid)
    ret = ct.c_void_p()
    ccall_cb(cport.g2_custom_rect_grid, cb, algo, left, bottom, right, top,
             herw, rinvalid, ct.byref(ret))
    return ret
Exemple #20
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
Exemple #21
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
Exemple #22
0
def circ4grid(algo, p0, rad, step, sqrside, rcoef):
    p0 = list_to_c(p0, float)
    rad = ct.c_double(rad)
    step = ct.c_double(step)
    sqrside = ct.c_double(sqrside)
    rcoef = ct.c_double(rcoef)
    ret = ct.c_void_p()
    ccall(cport.g2_circ4grid, algo, p0, rad, step, sqrside, rcoef,
          ct.byref(ret))
    return ret
Exemple #23
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)]
Exemple #24
0
def segment_partition(start, end, hstart, hend, hinternal):
    start = ct.c_double(start)
    end = ct.c_double(end)
    hstart = ct.c_double(hstart)
    hend = ct.c_double(hend)
    ninternal = ct.c_int(len(hinternal) / 2)
    hinternal = list_to_c(hinternal, float)
    nret = ct.c_int()
    ret = ct.POINTER(ct.c_double)()

    ccall(cport.c2_segment_partition, start, end, hstart, hend,
          ninternal, hinternal, ct.byref(nret), ct.byref(ret))
    r = ret[:nret.value]
    free_cside_array(ret, float)
    return r
Exemple #25
0
def to_msh(obj, fname, btypes, per_data, cb=None):
    """ per_data : [bnd_per-0, bnd_shadow-0,
                    pnt_per-0 as [x, y, z], pnt_shadow-0, ...]
    """
    fname = fname.encode('utf-8')
    btypes = CBoundaryNames(btypes)
    n_per_data = ct.c_int(len(per_data) / 4)
    it = iter(per_data)
    tmp = []
    while 1:
        try:
            tmp.append(next(it))
            tmp.append(next(it))
            tmp.extend(next(it))
            tmp.extend(next(it))
        except StopIteration:
            break
    per_data = list_to_c(tmp, float)
    ccall_cb(cport.g3_to_msh, cb, obj, fname, btypes, n_per_data, per_data)
Exemple #26
0
def unite_contours(objs):
    nconts = ct.c_int(len(objs))
    objs = list_to_c(objs, 'void*')
    ret_cont = ct.c_void_p(0)
    ccall(cport.c2_unite, nconts, objs, ct.byref(ret_cont))
    return ret_cont
Exemple #27
0
def to_msh(obj, fname, btypes, per_data, cb=None):
    fname = fname.encode('utf-8')
    btypes = CBoundaryNames(btypes)
    n_per_data = ct.c_int(len(per_data) / 3)
    per_data = list_to_c(per_data, int)
    ccall(cport.g2_to_msh, obj, fname, btypes, n_per_data, per_data)
Exemple #28
0
def concatenate(objs):
    objs = list_to_c(objs, "void*")
    nobjs = ct.c_int(len(objs))
    ret = ct.c_void_p()
    ccall(cport.c2_concatenate, nobjs, objs, ct.byref(ret))
    return ret
Exemple #29
0
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)