def __init__(self,*args,**kwargs): self.gfxmeshes = [] self.colmeshes = [] self.lodmeshes = [] self.polymeshes = [] self.pset = pointset() self.nset = pointset() self.uset = pointset() self.reps = {} #self._def('reps',{},**kwargs) #self._def('filename','model.mesh',**kwargs) self.filename = 'model.mesh'
def test_disjoint(self): pset = pointset() self.assertTrue(pset.disjoint(self.pset)) pset.ap(vec3(3,0,0)) self.assertTrue(pset.disjoint(self.pset)) pset.ap(vec3(0,0,0)) self.assertFalse(pset.disjoint(self.pset))
def test_disjoint(self): pset = pointset() self.assertTrue(pset.disjoint(self.pset)) pset.ap(vec3(3, 0, 0)) self.assertTrue(pset.disjoint(self.pset)) pset.ap(vec3(0, 0, 0)) self.assertFalse(pset.disjoint(self.pset))
def test_ap(self): pset = pointset() np = vec3(0,4,0) x = pset.ap(np) self.assertEqual(pset.ps[x],np) self.assertTrue(pset.ps[x] is np) np = vec3(2,-1,3.2) x = pset.ap(np) self.assertEqual(pset.ps[x],np) self.assertTrue(pset.ps[x] is np)
def setUp(self): self.pset = pointset() self.pset.ap(vec3(0,0,0)) self.pset.ap(vec3(1,0,0)) self.pset.ap(vec3(1,1,0)) self.pset.ap(vec3(1,1,1)) self.pset.ap(vec3(0,1,1)) self.pset.ap(vec3(0,0,1)) self.pset.ap(vec3(1,0,1)) self.pset.ap(vec3(0,1,0))
def test_ap(self): pset = pointset() np = vec3(0, 4, 0) x = pset.ap(np) self.assertEqual(pset.ps[x], np) self.assertTrue(pset.ps[x] is np) np = vec3(2, -1, 3.2) x = pset.ap(np) self.assertEqual(pset.ps[x], np) self.assertTrue(pset.ps[x] is np)
def setUp(self): self.pset = pointset() self.pset.ap(vec3(0, 0, 0)) self.pset.ap(vec3(1, 0, 0)) self.pset.ap(vec3(1, 1, 0)) self.pset.ap(vec3(1, 1, 1)) self.pset.ap(vec3(0, 1, 1)) self.pset.ap(vec3(0, 0, 1)) self.pset.ap(vec3(1, 0, 1)) self.pset.ap(vec3(0, 1, 0))
def setUp(self): self.mesh = tmsh.trimesh() self.pset = pointset() self.nset = pointset() self.uset = pointset()
def setUp(self): self.mesh = dmsh.polygonmesh() self.pset = pointset()
def asurf(self,poly,tm = None,fm = 'generic',rv = False, ref = False,smo = False,hmin = 1,zfunc = None,minhmin = 0.1, uvstacked = None,autoconnect = False): if tm is None:tm = self.agfxmesh() if uvstacked is None:uvstacked = db.roundrobin((None,)) eb,ibs = poly ngvs = [] pset = pointset() def av(p,n): if autoconnect: px = pset.fp(p) if px > -1:v = ngvs[px] else: pset.ap(p) v = tm.avert(*self.avert(p.cp(),n,next(uvstacked))) ngvs.append(v) else: v = tm.avert(*self.avert(p.cp(),n,next(uvstacked))) ngvs.append(v) return v if len(eb) < 5 and len(ibs) == 0 and not ref: if len(eb) == 3: p1,p2,p3 = eb n = gtl.nrm(p1,p2,p3) v1,v2,v3 = av(p1,n),av(p2,n),av(p3,n) if rv:f1 = tm.aface(v1,v3,v2,fm = fm) else:f1 = tm.aface(v1,v2,v3,fm = fm) ngvs.append(v1);ngvs.append(v2);ngvs.append(v3) elif len(eb) == 4: p1,p2,p3,p4 = eb n = gtl.nrm(p1,p2,p3) v1,v2,v3,v4 = av(p1,n),av(p2,n),av(p3,n),av(p4,n) if rv: f1 = tm.aface(v1,v3,v2,fm = fm) f2 = tm.aface(v1,v4,v3,fm = fm) else: f1 = tm.aface(v1,v2,v3,fm = fm) f2 = tm.aface(v1,v3,v4,fm = fm) ngvs.append(v1);ngvs.append(v2);ngvs.append(v3);ngvs.append(v4) else: eb,ibs = dtg.split_nondelauney_edges(eb,ibs) if ref: newhmin,eb,ibs = dtg.split_nondelauney_edges_chew1(eb,ibs) if newhmin < hmin: hmin = newhmin print('newhmin < hmin ...',newhmin) #ax = dtl.plot_axes_xy(100) #ax = dtl.plot_polygon_xy(eb,ax,lw = 2) #plt.show() if newhmin < minhmin: print('hmin is below threshold of surface->foregoing triangulation') return [] tris,bnds = dtg.triangulate(eb,ibs,hmin,ref,smo) if not tris:print('asurf: empty surface') for tri in tris: p1,p2,p3 = tri n = gtl.nrm(p1,p2,p3) v1,v2,v3 = av(p1,n),av(p2,n),av(p3,n) if rv:f1 = tm.aface(v1,v3,v2,fm = fm) else:f1 = tm.aface(v1,v2,v3,fm = fm) # need to somehow require all loops are placed before doing this # need to somehow require all loops are placed before doing this # need to somehow require all loops are placed before doing this # need to somehow require all loops are placed before doing this # need to somehow require all loops are placed before doing this if not zfunc is None: for ngv in ngvs: p = self.pset.ps[tm.verts[ngv][0]] p.ztrn(zfunc(p.x,p.y)) return ngvs