Esempio n. 1
0
def sphere():
    minCoord = pgf.var_float(-1.)
    maxCoord = pgf.var_float(1.)
    minpt = pgf.vec3(minCoord, minCoord, minCoord)
    maxpt = pgf.vec3(maxCoord, maxCoord, maxCoord)
    box = pgf.box3(minpt, maxpt)
    npts = pgv.slideri32("Point count", 5, 50, 25)
    cloud = pgf.randomPointsInBox(box, npts)
    pgv.show("Point Cloud", cloud)
    sphere, *_ = pgf.boundingSphere(cloud)
    return sphere
Esempio n. 2
0
import pygalfunc as pgf
import pygalview as pgv

minpt = pgf.var_vec3((-1., -1., -1.))
maxpt = pgf.var_vec3((1., 1., 1.))
box = pgf.box3(minpt, maxpt)
npts = pgv.slideri32("Point count", 10, 1000, 100)

cloud = pgf.randomPointsInBox(box, npts)
hull = pgf.convexHullFromPoints(cloud)

pgv.show("Convex Hull", hull)
pgv.show("Points", cloud)
Esempio n. 3
0
import pygalfunc as pgf
import pygalview as pgv


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 = pgv.slideri32("Point count", 5, 50, 25)
cloud = pgf.randomPointsInBox(box3, npts)

edgeLen = pgf.var_float(.01)
rect = pgf.rectangleMesh(plane, box2, edgeLen)

distances = pgf.distance(pgf.graft(pgf.vertices(rect)), cloud)
sortedDists = pgf.sort(distances, distances)
maxDist = pgf.listItem(sortedDists, pgf.sub(pgf.listLength(sortedDists), pgf.var_int(1)))

scheme = pgf.var_vec3([
    (0., 0., 1.),
    (0., 1., 0.),
    (1., 1., 0.),
    (1., 0., 0.)
])
colors = pgf.mapValueToColor(maxDist, pgf.var_vec2((.5, 1.2)), scheme)
colored = pgf.meshWithVertexColors(rect, colors)

circ, *_ = pgf.boundingCircle(cloud)
Esempio n. 4
0
import pygalfunc as pgf
import pygalview as pgv

POINTS = [
    (0, 0, 0),
    (1, 0, 0),
    (1, 1, 0),
    (-.3, 1, 0),
    (0, -1, 0),
]

pts = pgf.var_vec3(POINTS)
nums = pgf.toString(pgf.series(pgf.var_int(0), pgf.var_int(1), pgf.listLength(pts)))
idxPt = pgf.listItem(pts, pgv.slideri32("Index", 0, len(POINTS) - 1, 0))
circ, *_ = pgf.boundingCircle(pts)

pgv.show("indices", pgv.tags(nums, pts))
pgv.show("circle", circ)
pgv.show("points", pts)
pgv.print("Point at index", idxPt)
Esempio n. 5
0
def mesh():
    relpath = pgf.var_string("../assets/bunny_large.obj")
    # relpath = pgv.textField("Relative file path");
    path = pgf.absPath(relpath)
    return pgf.loadObjFile(path)


m = mesh()
s = sphere()

# The bounds function is overloaded for both mesh and sphere.
meshbbox = pgf.bounds(m)
spbbox = pgf.bounds(s)

pgv.show("mesh", m)
pgv.show("circ", s)
pgv.show("mbbox", meshbbox)
pgv.show("cbbox", spbbox)

ia = pgv.slideri32("int a", 5, 50, 25)
ib = pgv.slideri32("int b", 5, 50, 25)
fa = pgv.sliderf32("float a", 5., 50., 25.)
fb = pgv.sliderf32("float b", 5., 50., 25.)

# add function is overloaded for both floats and ints.
fsum = pgf.add(fa, fb)
isum = pgf.add(ia, ib)

pgv.print("fsum", fsum)
pgv.print("isum", isum)