Esempio n. 1
0
def test_meshPlaneClipping():
    mesh = loadLargeBunny()
    half = pgf.var_float(0.5)
    plane = pgf.plane(pgf.vec3(half, half, half), pgf.vec3(half, half, half))
    clipped = pgf.clipMesh(mesh, plane)

    area = pgf.read(pgf.area(clipped))
    nfaces = pgf.read(pgf.numFaces(clipped))
    nverts = pgf.read(pgf.numVertices(clipped))

    assert tu.equalf(area, 19.79486274)
    assert nfaces == 59387
    assert nverts == 30013
Esempio n. 2
0
def test_rectangleMesh():
    plane = pgf.plane(pgf.var_vec3((0., 0., 0.)), pgf.var_vec3((1., 1., 0.)))
    box = pgf.box2(pgf.var_vec2((0., 0.)), pgf.var_vec2((15., 12.)))
    edgeLn = pgf.var_float(1.)

    rect = pgf.rectangleMesh(plane, box, edgeLn)
    area = pgf.area(rect)
    nfaces = pgf.numFaces(rect)
    nverts = pgf.numVertices(rect)

    assert 360 == pgf.read(nfaces)
    assert 208 == pgf.read(nverts)
    assert tu.equalf(180., pgf.read(area))
Esempio n. 3
0
def test_meshSphereQuery():
    mesh = pgf.scale(loadSmallBunny(), pgf.var_float(10.0))
    zero = pgf.var_float(0.)
    center = pgf.vec3(zero, zero, zero)
    radius = pgf.var_float(.5)
    sphere = pgf.sphere(center, radius)

    rmesh, rindices, rcount = pgf.meshSphereQuery(mesh, sphere)

    nfaces = pgf.read(rcount)
    area = pgf.read(pgf.area(rmesh))
    assert tu.equalf(area, 0.4436888098716736)
    assert nfaces == 292
Esempio n. 4
0
def test_flatten():
    random.seed(42)
    intree = pgf.var_int()
    outtree = pgf.flatten(intree)
    for _ in range(5):
        vals = [[random.randint(23, 234)] for __ in range(10)]
        pgf.assign(intree, vals)
        expected = [item for subl in vals for item in subl]
        assert tu.equal(expected, pgf.read(outtree))
        vals = [[[random.randint(23, 234) for __ in range(5)]
                 for ___ in range(5)] for _____ in range(5)]
        pgf.assign(intree, vals)
        expected = [item for l0 in vals for l1 in l0 for item in l1]
        assert tu.equal(expected, pgf.read(outtree))
Esempio n. 5
0
def unaryFloatOpTest(expFn, pgfn, minval=0., maxval=9.):
    random.seed(42)
    x = pgf.var_float()
    s = pgfn(x)

    for _ in range(20):
        vx = random.uniform(minval, maxval)
        expected = expFn(vx)
        pgf.assign(x, vx)
        tu.assertEqualf(expected, pgf.read(s), 1e-3)

    vxs = [random.uniform(minval, maxval) for _ in range(20)]
    expectedvals = [expFn(v) for v in vxs]
    pgf.assign(x, vxs)
    tu.assertEqualf(expectedvals, pgf.read(s), 1e-3)
Esempio n. 6
0
def test_scaleMesh():
    mesh = loadLargeBunny()
    factor = 10.0
    scaled = pgf.scale(mesh, pgf.var_float(factor))
    meshes = [mesh, scaled]

    areas = [pgf.read(pgf.area(m)) for m in meshes]
    volumes = [pgf.read(pgf.volume(m)) for m in meshes]
    vcounts = [pgf.read(pgf.numVertices(m)) for m in meshes]
    fcounts = [pgf.read(pgf.numFaces(m)) for m in meshes]

    assert (abs(areas[1] - pow(factor, 2) * areas[0]) / areas[1]) < 1e-5
    assert (abs(volumes[1] - pow(factor, 3) * volumes[0]) / volumes[1]) < 1e-5
    assert vcounts[0] == vcounts[1]
    assert fcounts[0] == fcounts[1]
Esempio n. 7
0
def test_graft():
    random.seed(42)
    intree = pgf.var_int()
    out = pgf.graft(intree)
    for _ in range(5):
        vals = [random.randint(23, 345) for __ in range(10)]
        expected = [[v] for v in vals]
        pgf.assign(intree, vals)
        assert tu.equal(expected, pgf.read(out))
    for _ in range(5):
        vals = [[random.randint(23, 345) for __ in range(5)]
                for ___ in range(5)]
        expected = [[[v] for v in vl] for vl in vals]
        pgf.assign(intree, vals)
        assert tu.equal(expected, pgf.read(out))
Esempio n. 8
0
def test_closestPointsOnMesh():
    mesh = pgf.scale(loadSmallBunny(), pgf.var_float(10.))

    inpts = pgf.var_vec3([
        (0.359824538230896, -0.012389957904815674, 0.3581507205963135),
        (-0.3318827152252197, 0.1699751615524292, 0.7063822150230408),
        (0.27124643325805664, -0.14796850085258484, 0.5440048575401306),
        (0.2950490713119507, 0.0309564471244812, 1.5690069198608398),
        (0.470700740814209, 0.559279203414917, 0.5738930106163025),
        (-0.6372849941253662, 0.5158957242965698, 0.9492948055267334),
        (-0.42367517948150635, 0.17821109294891357, 0.5325688719749451),
        (0.24817490577697754, 0.27643465995788574, 0.5003229975700378),
        (-0.5128110647201538, -0.4166657030582428, 1.868307113647461),
        (-0.08426868915557861, 0.14360648393630981, 0.6685295104980469)
    ])

    outpts = pgf.closestPoints(mesh, inpts)

    expected = [
        (0.35241958498954773, -0.022721359506249428, 0.3823484480381012),
        (-0.3473210334777832, 0.18098655343055725, 0.6997533440589905),
        (0.22252899408340454, -0.13979701697826385, 0.36583301424980164),
        (0.1671879142522812, -0.029879290610551834, 1.274683952331543),
        (0.22475071251392365, 0.2590671181678772, 0.5857457518577576),
        (-0.5479510426521301, 0.21973726153373718, 0.9220386743545532),
        (-0.423895001411438, 0.11360426992177963, 0.5336558818817139),
        (0.21963083744049072, 0.23689928650856018, 0.5136839151382446),
        (-0.6122115254402161, -0.3117043375968933, 1.5369797945022583),
        (-0.03959565982222557, 0.34772586822509766, 0.666935384273529)
    ]

    assert tu.equalf(expected, pgf.read(outpts))
Esempio n. 9
0
def repeatGenericTest(val, pgvarfn, comparefn):
    random.seed(42)
    count = random.randint(23, 345)
    vals = [val for _ in range(count)]

    rval = pgvarfn(val)
    result = pgf.repeat(rval, pgf.var_int(count))

    assert comparefn(vals, pgf.read(result))
Esempio n. 10
0
def test_listSumFloat():
    random.seed(42)
    valrange = (22.345, 223.66)
    vals = [random.uniform(valrange[0], valrange[1]) for _ in range(25)]

    lst = pgf.var_float(vals)
    result = pgf.listSum(lst)

    assert tu.equalf(sum(vals), pgf.read(result), 1e-3)
Esempio n. 11
0
def test_listSumInt():
    random.seed(42)
    valrange = (23, 345)
    vals = [random.randint(valrange[0], valrange[1]) for _ in range(25)]

    lst = pgf.var_int(vals)
    result = pgf.listSum(lst)

    assert tu.equal(sum(vals), pgf.read(result))
def test_treeInputs():
    random.seed(42)
    vals = [[random.randint(23, 345) for _ in range(10)] for _ in range(10)]
    rvals = pgf.var_int()
    rsum = pgf.treeSum(rvals)
    expected = sum([sum(v) for v in vals])

    pgf.assign(rvals, vals)
    assert tu.equal(expected, pgf.read(rsum))
Esempio n. 13
0
def test_meshBounds():
    assetFiles = ["bunny_large.obj", "bunny.obj"]
    fpaths = pgf.var_string("")
    pgf.assign(fpaths, [tu.assetPath(a) for a in assetFiles])
    meshes = pgf.loadObjFile(fpaths)
    bounds = pgf.bounds(meshes)
    pmins, pmaxs = pgf.boxPoints(bounds)

    vpmins = pgf.read(pmins)
    vpmaxs = pgf.read(pmaxs)
    assert tu.equalf(
        vpmins,
        [[-1.8937978744506836, -1.1759940385818481, -0.3402520418167114],
         [-0.09438041597604752, -0.058714643120765686, 0.033309899270534515]])
    assert tu.equalf(
        vpmaxs,
        [[1.2201818227767944, 1.2374719381332397, 2.746419906616211],
         [0.060778796672821045, 0.061679162085056305, 0.18699601292610168]])
def test_heterogenousTrees():
    random.seed(42)
    vals1 = [[2], [3]]
    vals2 = [4, 5]
    expected = [[8, 10], [12, 15]]

    rvals1 = pgf.var_int(vals1)
    rvals2 = pgf.var_int(vals2)
    prod = pgf.mul(rvals1, rvals2)
    assert tu.equal(expected, pgf.read(prod))
Esempio n. 15
0
def listItemGenericTest(vals, pgvarfn, comparefn):
    rvals = pgvarfn(vals)
    rindex = pgf.var_int()
    result = pgf.listItem(rvals, rindex)

    random.seed(42)
    for _ in range(25):
        index = random.randint(0, len(vals) - 1)
        pgf.assign(rindex, index)
        assert comparefn(vals[index], pgf.read(result))
Esempio n. 16
0
def binaryFloatOpTest(expFn, pgfn, minval=2., maxval=124.5):
    random.seed(42)
    a = pgf.var_float()
    b = pgf.var_float()
    r = pgfn(a, b)

    for _ in range(20):
        va = random.uniform(minval, maxval)
        vb = random.uniform(minval, maxval)
        expected = expFn(va, vb)
        pgf.assign(a, va)
        pgf.assign(b, vb)
        assert tu.equalf(expected, pgf.read(r), 1e-3)

    vas = [random.uniform(minval, maxval) for _ in range(20)]
    vbs = [random.uniform(minval, maxval) for _ in range(20)]
    expectedVals = [expFn(va, vb) for va, vb in zip(vas, vbs)]
    pgf.assign(a, vas)
    pgf.assign(b, vbs)
    assert tu.equalf(expectedVals, pgf.read(r), 1e-3)
Esempio n. 17
0
def binaryIntOpTest(expFn, pgfn, minval=2, maxval=124):
    random.seed(42)
    a = pgf.var_int()
    b = pgf.var_int()
    r = pgfn(a, b)

    for _ in range(20):
        va = random.randint(minval, maxval)
        vb = random.randint(minval, maxval)
        expected = expFn(va, vb)
        pgf.assign(a, va)
        pgf.assign(b, vb)
        assert tu.equal(expected, pgf.read(r))

    vas = [random.randint(minval, maxval) for _ in range(20)]
    vbs = [random.randint(minval, maxval) for _ in range(20)]
    expectedVals = [expFn(va, vb) for va, vb in zip(vas, vbs)]
    pgf.assign(a, vas)
    pgf.assign(b, vbs)
    assert tu.equal(expectedVals, pgf.read(r))
Esempio n. 18
0
def test_distance2():
    p1 = pgf.var_vec2()
    p2 = pgf.var_vec2()
    dist = pgf.distance(p1, p2)
    for _ in range(20):
        val1 = (random.uniform(1.2, 12.5), random.uniform(2.5, 15.6))
        val2 = (random.uniform(1.26, 22.5), random.uniform(1.5, 13.9))
        dval = math.sqrt(
            math.pow(val1[0] - val2[0], 2.) + math.pow(val1[1] - val2[1], 2.))
        pgf.assign(p1, val1)
        pgf.assign(p2, val2)

        assert tu.equalf(pgf.read(dist), dval)
Esempio n. 19
0
def test_dispatch():
    random.seed(42)
    valrange = (23, 345)
    rvals = pgf.var_int()
    rpattern = pgf.var_bool()
    rtvals, rfvals = pgf.dispatch(rvals, rpattern)
    for _ in range(20):
        nItems = 25
        vals = [
            random.randint(valrange[0], valrange[1]) for _ in range(nItems)
        ]
        pattern = [
            random.randint(valrange[0], valrange[1]) % 2 == 0
            for _ in range(nItems)
        ]
        tvals = [v for v, p in zip(vals, pattern) if p]
        fvals = [v for v, p in zip(vals, pattern) if not p]

        pgf.assign(rvals, vals)
        pgf.assign(rpattern, pattern)
        assert tu.equal(tvals, pgf.read(rtvals))
        assert tu.equal(fvals, pgf.read(rfvals))
def test_itemListMapping():
    random.seed(42)
    singleval = 42
    single = pgf.var_int(singleval)
    lst = pgf.var_int()
    out = pgf.add(single, lst)
    for _ in range(10):
        vals = list(range(12))
        random.shuffle(vals)
        expected = [singleval + v for v in vals]

        pgf.assign(lst, vals)
        assert tu.equal(expected, pgf.read(out))
Esempio n. 21
0
def test_seriesInt():
    random.seed(42)
    valrange = (23, 256)
    steprange = (2, 9)
    valstart = random.randint(valrange[0], valrange[1])
    valstep = random.randint(steprange[0], steprange[1])
    valcount = random.randint(valrange[0], valrange[1])
    valstop = valstart + valstep * valcount

    start = pgf.var_int(valstart)
    step = pgf.var_int(valstep)
    count = pgf.var_int(valcount)
    series = pgf.series(start, step, count)

    assert tu.equal(range(valstart, valstop, valstep), pgf.read(series))
Esempio n. 22
0
def test_seriesFloat():
    random.seed(42)
    valrange = (22.345, 223.66)
    steprange = (1.778, 9.56)
    valstart = random.uniform(valrange[0], valrange[1])
    valstep = random.uniform(steprange[0], steprange[1])
    valcount = random.randint(25, 98)
    valstop = valstart + valstep * valcount

    start = pgf.var_float(valstart)
    step = pgf.var_float(valstep)
    count = pgf.var_int(valcount)
    series = pgf.series(start, step, count)

    expected = [(valstart + i * valstep) for i in range(valcount)]
    tu.assertEqualf(expected, pgf.read(series), 1e-3)
Esempio n. 23
0
def test_cachedOffsetDataRegression():
    # This tests for a regression (lack of) happened while working on PR # 53.
    pt = pgf.var_vec3((0., 0., 0.))
    norm = pgf.var_vec3((0., 0., 1.))
    plane = pgf.plane(pt, norm)
    minpt = pgf.var_vec3((-.5, -.5, 0.))
    maxpt = pgf.var_vec3((.5, .5, 0.))
    box2 = pgf.box2(pgf.var_vec2((-.5, -.5)), pgf.var_vec2((.5, .5)))
    box3 = pgf.box3(minpt, maxpt)
    npts = pgf.var_int(4)
    cloud = pgf.randomPointsInBox(box3, npts)
    edgeLen = pgf.var_float(1)
    rect = pgf.rectangleMesh(plane, box2, edgeLen)
    distances = pgf.distance(pgf.graft(pgf.vertices(rect)), cloud)
    pdists = pgf.read(pgf.flatten(distances))
    assert len(pdists) == 16
Esempio n. 24
0
def test_combinations():
    random.seed(42)
    valrange = (23, 345)
    rvals = pgf.var_int()
    rnumc = pgf.var_int()
    rcombs = pgf.combinations(rvals, rnumc)
    for _ in range(5):
        nItems = random.randint(23, 29)
        numc = random.randint(3, 5)
        vals = [
            random.randint(valrange[0], valrange[1]) for _ in range(nItems)
        ]
        combs = list(itertools.combinations(vals, numc))

        pgf.assign(rvals, vals)
        pgf.assign(rnumc, numc)
        assert tu.equal(combs, pgf.read(rcombs))
Esempio n. 25
0
def test_listLength():
    random.seed(42)
    valrange = (23, 345)
    rvals = pgf.var_int()
    rstart = pgf.var_int()
    rstop = pgf.var_int()
    slist = pgf.subList(rvals, rstart, rstop)
    for _ in range(20):
        vals = [random.randint(valrange[0], valrange[1]) for _ in range(25)]
        irange = (random.randint(0,
                                 len(vals) - 1),
                  random.randint(0,
                                 len(vals) - 1))
        irange = sorted(irange)
        expected = vals[irange[0]:irange[1]]
        # print(len(vals), irange[0], irange[1])
        pgf.assign(rvals, vals)
        pgf.assign(rstart, irange[0])
        pgf.assign(rstop, irange[1])
        tu.assertEqual(expected, pgf.read(slist))
Esempio n. 26
0
def test_meshCentroid():
    mesh = loadLargeBunny()
    centroid = pgf.read(pgf.centroid(mesh))
    assert tu.equalf(
        centroid,
        [-0.46018099784851074, -0.17610645294189453, 0.8226389288902283])
Esempio n. 27
0
def test_meshCentroid():
    mesh = loadLargeBunny()
    centroid = pgf.read(pgf.centroid(mesh))
    assert tu.equalf(
        centroid,
        [-0.4187779128551483, -0.21727733314037323, 0.7404823899269104])