Changeset 1134
- Timestamp:
- 11/21/08 09:25:37 (2 months ago)
- Files:
-
- analog/pyeac/trunk/eeepc/eacmesh.py (modified) (1 diff)
- analog/pyeac/trunk/eeepc/visualizer.py (modified) (2 diffs)
- analog/pyeac/trunk/eeepc/visualizer.pyc (modified) (previous)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
analog/pyeac/trunk/eeepc/eacmesh.py
r1133 r1134 17 17 self.xdim = xdim 18 18 self.ydim = ydim 19 self.xrange = numpy.arange(0,5,1) 20 self.yrange = numpy.arange(0,5,1) 21 self.xstep = 5.0/self.xdim 22 self.ystep = 5.0/self.ydim 23 self.mesh = numpy.zeros(self.xdim*self.ydim).reshape(self.xdim,self.ydim) 19 self.xrange = numpy.arange(0,5.1,5.0/4.0) 20 self.yrange = numpy.arange(0,5.1,5.0/4.0) 21 self.xstep = 5.0/(self.xdim-1) 22 self.ystep = 5.0/(self.ydim-1) 23 self.vmax = 5.0 24 self.vmin = 0.0 24 25 25 26 def update(self,eacdata): 26 27 self.outgrid = RectBivariateSpline(self.xrange,self.yrange,eacdata) 27 for x in range(self.xdim): 28 for y in range(self.ydim): 29 self.mesh[x,y] = self.outgrid(x*self.xstep, y*self.ystep) 30 return self.mesh 28 mesh = [] 29 vmax_temp = 0 30 vmin_temp = 10 31 for y in range(self.ydim): 32 row = [] 33 for x in range(self.xdim): 34 vtemp = self.outgrid(x*self.xstep, y*self.ystep) 35 if vtemp > vmax_temp: 36 vmax_temp = vtemp 37 elif vtemp < vmin_temp: 38 vmin_temp = vtemp 39 row.append(self.color_transform(vtemp)) 40 mesh.append(row) 41 # self.vmax = vmax_temp 42 # self.vmin = vmin_temp 43 return mesh 44 45 def color_transform(self, vdata): 46 span = self.vmax - self.vmin 47 vnorm = float((vdata - self.vmin)/span) 48 if vnorm > 1: 49 vnorm = 1 50 elif vnorm < 0: 51 vnorm = 0 52 vnorm = 255.0 * vnorm 53 return ((vnorm,vnorm,vnorm)) 54 # vnorm *= 16777215 55 # vnorm = int(vnorm) 56 # red = 16711680 & vnorm 57 # red >>= 16 58 # green = 65280 & vnorm 59 # green >>= 8 60 # blue = 255 & vnorm 61 # print red,green,blue 62 # return ((red,green,blue)) 31 63 32 64 if __name__ == '__main__': 33 edata = numpy.arange( 25).reshape(5,5)65 edata = numpy.arange(0,5,5.0/25).reshape(5,5) 34 66 meac = EacMesh(30,30) 35 67 print meac.update(edata) analog/pyeac/trunk/eeepc/visualizer.py
r1110 r1134 8 8 from numpy import arange,zeros 9 9 from scipy import mgrid, interpolate 10 from eacmesh import EacMesh 10 11 11 12 class Visualizer: … … 15 16 self.fill_color = (0,0,0) 16 17 self.palette = self.createpalette() 17 self.surface = pygame.Surface((480,480)) 18 fill_window = Rect((0,0),(96,96)) 19 for y in range(5): 20 for x in range(5): 18 19 self.xpixels = 480 20 self.ypixels = 480 21 22 self.xblocks = 48 23 self.yblocks = 48 24 25 self.xblockpx = self.xpixels/self.xblocks 26 self.yblockpx = self.ypixels/self.yblocks 27 28 self.surface = pygame.Surface((self.xpixels,self.ypixels)) 29 30 fill_window = Rect((0,0),(self.xblockpx,self.yblockpx)) 31 for y in range(self.yblocks): 32 for x in range(self.xblocks): 21 33 self.surface.fill(self.fill_color,fill_window) 22 fill_window = fill_window.move(96,0) 23 fill_window = fill_window.move(-480,96) 34 fill_window = fill_window.move(self.xblockpx+1,0) 35 fill_window = fill_window.move(-self.xpixels,self.yblockpx+1) 36 37 self.emesh = EacMesh(self.xblocks,self.yblocks) 24 38 25 39 def set_block(self, pos, color): 26 fill_window = Rect(( pos[0]*96,pos[1]*96),(96,96))40 fill_window = Rect(((pos[0]*(self.xblockpx))+1,(pos[1]*(self.yblockpx))+1),(self.xblockpx,self.yblockpx)) 27 41 self.surface.fill(color,fill_window) 28 42 29 43 def set_all(self,color): 30 fill_window = Rect((0,0),( 480,480))44 fill_window = Rect((0,0),(self.xpixels,self.ypixels)) 31 45 self.surface.fill(color,fill_window) 32 46 33 47 def update(self,pg): 34 48 if self.absolute == True: 35 # x,y = mgrid[0.0:5.0:1.0,0.0:5.0:1.0] 36 # z = zeros((5,5)) 37 # for row in range(5): 38 # for col in range(5): 39 # z[row][col] = float(pg.grid[row][col].voltage) 40 # 41 # print z.shape 42 # xnew,ynew = mgrid[0.0:5.0:1.0/400.0,0.0:5.0:1.0/400.0] 43 # tck = interpolate.bisplrep(x,y,z,s=0) 44 # znew = interpolate.bisplev(xnew[:,0],ynew[0,:],tck) 45 # print znew.shape 46 # row = 0 47 # col = 0 48 # for row in range(400): 49 # for col in range(400): 50 # color_norm = znew[row][col]/5.0 51 # if color_norm > 1: 52 # color_norm = 1 53 # elif color_norm < 0: 54 # color_norm = 0 55 # 56 # color_norm *= 16777215 57 # red = (int(color_norm) & 0xFF0000) >> 16 58 # if red > 0xFF: 59 # print red 60 # green = (int(color_norm) & 0x00FF00) >> 8 61 # if green > 0xFF: 62 # print green 63 # blue = (int(color_norm) & 0x0000FF) 64 # if blue > 0xFF: 65 # print blue 66 # 67 # self.surface.set_at((row,col),(red,green,blue)) 68 69 max = 5.0 70 min = 0.0 71 for y in range(5): 72 for x in range(5): 73 voltage = float(pg.grid[y][x].voltage) 74 if voltage > max: 75 voltage = max 76 elif voltage < min: 77 voltage = min 78 cdata = self.palette[int((voltage/max)*255)] 79 self.set_block((x,y),cdata) 49 self.interpolate = True 50 if self.interpolate == True: 51 z = zeros((5,5)) 52 for row in range(5): 53 for col in range(5): 54 z[row][col] = float(pg.grid[row][col].voltage) 55 blockdata = self.emesh.update(z) 56 57 for y in range(self.yblocks): 58 for x in range(self.xblocks): 59 self.set_block((x,y),blockdata[x][y]) 60 # self.set_block((x,y),(50+2*x,0,0)) 61 else: 62 max = 5.0 63 min = 0.0 64 for y in range(5): 65 for x in range(5): 66 voltage = float(pg.grid[y][x].voltage) 67 if voltage > max: 68 voltage = max 69 elif voltage < min: 70 voltage = min 71 cdata = self.palette[int((voltage/max)*255)] 72 self.set_block((x,y),cdata) 80 73 else: 81 74 max = 0.0
