コード例 #1
0
ファイル: landscape.py プロジェクト: ctogle/dilapidator
 def split(self,ps,ws,ts):
     level0 = []
     level = []
     after = []
     mpt = dpv.midpoint
     pcnt = len(ps)
     for t in ts:
         if ws[t[0]] == ws[t[1]]:w1 = ws[t[0]].copy()
         else:w1 = dpv.one()
         if ws[t[1]] == ws[t[2]]:w2 = ws[t[1]].copy()
         else:w2 = dpv.one()
         if ws[t[2]] == ws[t[0]]:w3 = ws[t[2]].copy()
         else:w3 = dpv.one()
         m1 = self.search(level,level0,ps[t[0]],ps[t[1]],w1)+pcnt
         m2 = self.search(level,level0,ps[t[1]],ps[t[2]],w2)+pcnt
         m3 = self.search(level,level0,ps[t[2]],ps[t[0]],w3)+pcnt
         after.append((t[0],m1,m3))
         after.append((m1,t[1],m2))
         after.append((m3,m2,t[2]))
         after.append((m1,m2,m3))
     for l in level:
         l[0].z += l[1]
         ps.append(l[0])
         ws.append(l[2])
     return after
コード例 #2
0
ファイル: landscape.py プロジェクト: ctogle/dilapidator
 def _cover(self,radius = 100,tri_edgelength = 10,mod_edgelength = 250):
     convexcover = dpr.pts_to_convex_xy(self.regions)
     dpr.inflate(convexcover,radius)
     pts,tris = dpr.triangle_cover(convexcover,mod_edgelength)
     wts = [dpv.one() for x in pts]
     self.center = dpv.center_of_mass(convexcover)
     return pts,wts,tris,convexcover
コード例 #3
0
 def __init__(self, owner, **kwargs):
     self.owner = owner
     self._def('parent', None, **kwargs)
     self._def('children', [], **kwargs)
     self._def('pos', dpv.zero(), **kwargs)
     #self._def('rot',dpv.zero(),**kwargs)
     self._def('rot', dpq.zero(), **kwargs)
     self._def('scl', dpv.one(), **kwargs)
コード例 #4
0
ファイル: tform.py プロジェクト: ctogle/dilapidator
 def __init__(self,owner,**kwargs):
     self.owner = owner
     self._def('parent',None,**kwargs)
     self._def('children',[],**kwargs)
     self._def('pos',dpv.zero(),**kwargs)
     #self._def('rot',dpv.zero(),**kwargs)
     self._def('rot',dpq.zero(),**kwargs)
     self._def('scl',dpv.one(),**kwargs)
コード例 #5
0
ファイル: sgraph.py プロジェクト: ctogle/dilapidator
    def _def_uv_tform(self,*args,**kwargs):
        if hasattr(self,'uv_tform'):return
        kweys = kwargs.keys()
        pos = kwargs[ke] if 'uv_pos' in kweys else dpv.zero()
        rot = kwargs[ke] if 'uv_rot' in kweys else dpv.zero()
        scl = kwargs[ke] if 'uv_scl' in kweys else dpv.one()
        tpar = kwargs[ke] if 'uv_parent' in kweys else None
        tchi = kwargs[ke] if 'uv_children' in kweys else []

        ntf = dtf.tform(self,parent = tpar,
            pos = pos,rot = rot,scl = scl,
            children = [ch.uv_tform for ch in tchi])
        self.uv_tform = ntf
コード例 #6
0
ファイル: sgraph.py プロジェクト: ctogle/dilapidator
    def _def_tform(self,*args,**kwargs):
        if hasattr(self,'tform'):return
        kweys = kwargs.keys()
        pos = kwargs['pos'] if 'pos' in kweys else dpv.zero()
        rot = kwargs['rot'] if 'rot' in kweys else dpq.zero()
        scl = kwargs['scl'] if 'scl' in kweys else dpv.one()
        tpar = kwargs['parent'] if 'parent' in kweys else None
        tchi = kwargs['children'] if 'children' in kweys else []

        ntf = dtf.tform(self,parent = tpar,
            pos = pos,rot = rot,scl = scl,
            children = [ch.tform for ch in tchi])
        self.tform = ntf
コード例 #7
0
ファイル: cube.py プロジェクト: ctogle/dilapidator
 def _geo(self):
     og = dpv.one().scale_u(0.5).flip()
     bottom = [og.copy(),
         og.copy().translate_x(1),
         og.copy().translate_x(1).translate_y(1),
         og.copy().translate_y(1)]
     top = [b.copy().translate_z(1) for b in bottom]
     bottom.reverse()
     self._quad(*bottom)
     self._quad(*top)
     top.reverse()
     bottom.append(bottom[0])
     top.append(top[0])
     self._bridge(bottom,top)
コード例 #8
0
    def _def_uv_tform(self, *args, **kwargs):
        if hasattr(self, 'uv_tform'): return
        kweys = kwargs.keys()
        pos = kwargs[ke] if 'uv_pos' in kweys else dpv.zero()
        rot = kwargs[ke] if 'uv_rot' in kweys else dpv.zero()
        scl = kwargs[ke] if 'uv_scl' in kweys else dpv.one()
        tpar = kwargs[ke] if 'uv_parent' in kweys else None
        tchi = kwargs[ke] if 'uv_children' in kweys else []

        ntf = dtf.tform(self,
                        parent=tpar,
                        pos=pos,
                        rot=rot,
                        scl=scl,
                        children=[ch.uv_tform for ch in tchi])
        self.uv_tform = ntf
コード例 #9
0
    def _def_tform(self, *args, **kwargs):
        if hasattr(self, 'tform'): return
        kweys = kwargs.keys()
        pos = kwargs['pos'] if 'pos' in kweys else dpv.zero()
        rot = kwargs['rot'] if 'rot' in kweys else dpq.zero()
        scl = kwargs['scl'] if 'scl' in kweys else dpv.one()
        tpar = kwargs['parent'] if 'parent' in kweys else None
        tchi = kwargs['children'] if 'children' in kweys else []

        ntf = dtf.tform(self,
                        parent=tpar,
                        pos=pos,
                        rot=rot,
                        scl=scl,
                        children=[ch.tform for ch in tchi])
        self.tform = ntf
コード例 #10
0
 def _geo(self):
     og = dpv.one().scale_u(0.5).flip()
     bottom = [
         og.copy(),
         og.copy().translate_x(1),
         og.copy().translate_x(1).translate_y(1),
         og.copy().translate_y(1)
     ]
     top = [b.copy().translate_z(1) for b in bottom]
     bottom.reverse()
     self._quad(*bottom)
     self._quad(*top)
     top.reverse()
     bottom.append(bottom[0])
     top.append(top[0])
     self._bridge(bottom, top)
コード例 #11
0
ファイル: floor.py プロジェクト: ctogle/dilapidator
    def _geo_gapless(self):
        l,w,h,m = self.l,self.w,self.h,self.m
        corners = dpr.square(l,w)
        #us = dpr.polygon(4)
        us = dpr.square(1,1)
        dpv.translate_coords(us,dpv.one().scale_u(0.5))
        dpv.scale_coords_x(us,l)
        dpv.scale_coords_y(us,w)
        us = [v.xy2d() for v in us]
        self._quad(*corners,us = us,m = m)
        bcorners = [c.copy().translate_z(-h) for c in corners]
        bcorners.reverse()
        self._quad(*bcorners,us = us,m = m)

        bcorners.reverse()
        bcorners.append(bcorners[0])
        corners.append(corners[0])
        nfs = self._bridge(corners,bcorners,m = m)
        self._project_uv_flat(nfs)
コード例 #12
0
ファイル: floor.py プロジェクト: ctogle/dilapidator
    def _geo_gapless(self):
        l, w, h, m = self.l, self.w, self.h, self.m
        corners = dpr.square(l, w)
        #us = dpr.polygon(4)
        us = dpr.square(1, 1)
        dpv.translate_coords(us, dpv.one().scale_u(0.5))
        dpv.scale_coords_x(us, l)
        dpv.scale_coords_y(us, w)
        us = [v.xy2d() for v in us]
        self._quad(*corners, us=us, m=m)
        bcorners = [c.copy().translate_z(-h) for c in corners]
        bcorners.reverse()
        self._quad(*bcorners, us=us, m=m)

        bcorners.reverse()
        bcorners.append(bcorners[0])
        corners.append(corners[0])
        nfs = self._bridge(corners, bcorners, m=m)
        self._project_uv_flat(nfs)