def _geo(self): self.lnstocenter = self._lanestocenter() #m = dtm.meshme(pts,None,None,None,[],tris) m = dmo.model() lpt1, lpt2 = self._geo_pair(0) m._consume(dcu.cube().translate(lpt1).translate_z(0.5)) m._consume(dcu.cube().translate(lpt2).translate_z(0.5)) lrow = [lpt1] rrow = [lpt2] for pdx in range(1, len(self.road.vertices)): pt1, pt2 = self._geo_pair(pdx) m._quad(pt1, pt2, lpt2, lpt1) lpt1, lpt2 = pt1, pt2 lrow.append(lpt1) rrow.append(lpt2) m._consume(dcu.cube().translate(pt1).translate_z(0.5)) m._consume(dcu.cube().translate(pt2).translate_z(0.5)) self.leftrow = lrow self.rightrow = rrow return m
def pelt(self): s = dmo.model() for f in self.fs: if f is None:continue v1 = self.vs[f[0]] v2 = self.vs[f[1]] v3 = self.vs[f[2]] s._triangle(v1.p,v2.p,v3.p,[v1.n,v2.n,v3.n]) return s
def skeleton(self): s = dmo.model() for v in self.vs: m = dcu.cube().scale(dpv.one().scale_u(0.1)).translate(v.p) s._consume(m) for e in self.es: cq = dpq.q_from_uu(dpv.zhat, dpv.v1_v2(self.vs[e[0]].p,self.vs[e[1]].p)) c = dcy.cylinder().translate_z(0.5) c.scale_x(0.05).scale_y(0.05).rotate(cq) c.translate(self.vs[e[0]].p) s._consume(c) return s
def model(self): p = dpv.zero() d = dpv.z() #ltree(-1)._realize(p,d) total = dmo.model() #tps = [(x,y) for x in range(3) for y in range(3)] tps = [(x, y) for x in range(1) for y in range(1)] for i, xy in enumerate(tps): x, y = xy kws = {'seed': i} self.ltree._realize(p, d) lmod = self.model lmod.translate(dpv.vector(10 * x, 10 * y, 0)) total._consume(lmod) return total
def model(self): p = dpv.zero() d = dpv.z() #ltree(-1)._realize(p,d) total = dmo.model() #tps = [(x,y) for x in range(3) for y in range(3)] tps = [(x,y) for x in range(1) for y in range(1)] for i,xy in enumerate(tps): x,y = xy kws = {'seed':i} self.ltree._realize(p,d) lmod = self.model lmod.translate(dpv.vector(10*x,10*y,0)) total._consume(lmod) return total
def grass(self,model,years): growth = dmo.model() hitfaces = self.hitdata['hitfaces'] hitcasts = self.hitdata['hitcasts'] pfaces = self.hitdata['pfaces'] #nfaces = self.hitdata['nfaces'] for hdx in range(len(hitfaces)): if random.random() < 0.9:continue hf = hitfaces[hdx] hc = hitcasts[hdx] dtb = dpv.distance_to_border_xy(hc,pfaces[hf]) rad = dtb if rad < 0.4:continue clump = dg.grass_clump(width = 0.75,radius = rad) growth._consume(clump.translate(hc)) return growth
def trees(self,model,years): growth = dmo.model() hitfaces = self.hitdata['hitfaces'] hitcasts = self.hitdata['hitcasts'] pfaces = self.hitdata['pfaces'] #nfaces = self.hitdata['nfaces'] for hdx in range(len(hitfaces)): #if random.random() < 0.99:continue hf = hitfaces[hdx] hc = hitcasts[hdx] #dtb = dpv.distance_to_border_xy(hc,pfaces[hf]) #rad = dtb #if rad < 1:continue tree = dcyl.cylinder().translate_z(0.5).scale_z(10) #tree = dpi.pipe() growth._consume(tree.translate(hc)) return growth
def ivy(self,model,years): growth = dmo.model() hitfaces = self.hitdata['hitfaces'] hitcasts = self.hitdata['hitcasts'] pfaces = self.hitdata['pfaces'] nfaces = self.hitdata['nfaces'] seeds = [] for hdx in range(len(hitfaces)): if random.random() < 0.999:continue hf = hitfaces[hdx] hc = hitcasts[hdx] seeds.append((hf,hc)) for sd in seeds: vine = dv.vine() vine.grow(sd,pfaces,nfaces,years) growth._consume(vine) return growth
def test(): import dilap.construct as dlc p = dpv.zero() d = dpv.z() #pythagoras_tree()._realize(p,d) #dragon_curve()._realize(p,d) total = dmo.model() #for l in range(5):tree(l)._realize(p,d) ltree(-1)._realize(p,d) tps = [(x,y) for x in range(3) for y in range(3)] for i,xy in enumerate(tps): x,y = xy kws = {'seed':i} lmod = ltree(-1,**kws)._realize(p,d).model lmod.translate(dpv.vector(10*x,10*y,0)) total._consume(lmod) dlc.build(total)
def _geo(self): m = dmo.model() for l in self.lanes: m._consume(l._geo()) self._consume(m)
def pelt(self): s = dmo.model() for smp in self.simplices: t1,t2,t3 = smp s._triangle(t3,t2,t1) return s
def wither_model(self, model, years): change = dmo.model() for w in self.withers: wmo = self.__getattribute__(w)(model, years) if not wmo is None: change._consume(wmo) return change
def generate_switchback(self,level): floor = dmo.model() pdb.set_trace() return self._node_wrap(floor)
def generate_switchback(self, level): floor = dmo.model() pdb.set_trace() return self._node_wrap(floor)
def wither_model(self,model,years): change = dmo.model() for w in self.withers: wmo = self.__getattribute__(w)(model,years) if not wmo is None:change._consume(wmo) return change