|  | """ | 
|  | *  Copyright (c) 2012 The WebM project authors. All Rights Reserved. | 
|  | * | 
|  | *  Use of this source code is governed by a BSD-style license | 
|  | *  that can be found in the LICENSE file in the root of the source | 
|  | *  tree. An additional intellectual property rights grant can be found | 
|  | *  in the file PATENTS.  All contributing project authors may | 
|  | *  be found in the AUTHORS file in the root of the source tree. | 
|  | """ | 
|  | #!/usr/bin/env python | 
|  | import sys,string,os,re,math,numpy | 
|  | scale = 2**16 | 
|  | def dist(p1,p2): | 
|  | x1,y1 = p1 | 
|  | x2,y2 = p2 | 
|  | if x1==x2 and y1==y2 : | 
|  | return 1.0 | 
|  | return 1/ math.sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2)) | 
|  |  | 
|  | def gettaps(p): | 
|  | def l(b): | 
|  | return int(math.floor(b)) | 
|  | def h(b): | 
|  | return int(math.ceil(b)) | 
|  | def t(b,p,s): | 
|  | return int((scale*dist(b,p)+s/2)/s) | 
|  | r,c = p | 
|  | ul=[l(r),l(c)] | 
|  | ur=[l(r),h(c)] | 
|  | ll=[h(r),l(c)] | 
|  | lr=[h(r),h(c)] | 
|  | sum = dist(ul,p)+dist(ur,p)+dist(ll,p)+dist(lr,p) | 
|  | t4 = scale - t(ul,p,sum) - t(ur,p,sum) - t(ll,p,sum); | 
|  | return [[ul,t(ul,p,sum)],[ur,t(ur,p,sum)], | 
|  | [ll,t(ll,p,sum)],[lr,t4]] | 
|  |  | 
|  | def print_mb_taps(angle,blocksize): | 
|  | theta = angle / 57.2957795; | 
|  | affine = [[math.cos(theta),-math.sin(theta)], | 
|  | [math.sin(theta),math.cos(theta)]] | 
|  | radius = (float(blocksize)-1)/2 | 
|  | print " // angle of",angle,"degrees" | 
|  | for y in range(blocksize) : | 
|  | for x in range(blocksize) : | 
|  | r,c = numpy.dot(affine,[y-radius, x-radius]) | 
|  | tps = gettaps([r+radius,c+radius]) | 
|  | for t in tps : | 
|  | p,t = t | 
|  | tr,tc = p | 
|  | print " %2d, %2d, %5d, " % (tr,tc,t,), | 
|  | print " // %2d,%2d " % (y,x) | 
|  |  | 
|  | i=float(sys.argv[1]) | 
|  | while  i <= float(sys.argv[2]) : | 
|  | print_mb_taps(i,float(sys.argv[4])) | 
|  | i=i+float(sys.argv[3]) | 
|  | """ | 
|  |  | 
|  | taps = [] | 
|  | pt=dict() | 
|  | ptr=dict() | 
|  | for y in range(16) : | 
|  | for x in range(16) : | 
|  | r,c = numpy.dot(affine,[y-7.5, x-7.5]) | 
|  | tps = gettaps([r+7.5,c+7.5]) | 
|  | j=0 | 
|  | for tp in tps : | 
|  | p,i = tp | 
|  | r,c = p | 
|  | pt[y,x,j]= [p,i] | 
|  | try: | 
|  | ptr[r,j,c].append([y,x]) | 
|  | except: | 
|  | ptr[r,j,c]=[[y,x]] | 
|  | j = j+1 | 
|  |  | 
|  | for key in sorted(pt.keys()) : | 
|  | print key,pt[key] | 
|  |  | 
|  | lr = -99 | 
|  | lj = -99 | 
|  | lc = 0 | 
|  |  | 
|  | shuf="" | 
|  | mask="" | 
|  | for r,j,c in sorted(ptr.keys()) : | 
|  | for y,x in ptr[r,j,c] : | 
|  | if lr != r or lj != j : | 
|  | print "shuf_"+str(lr)+"_"+str(lj)+"_"+shuf.ljust(16,"0"), lc | 
|  | shuf="" | 
|  | lc = 0 | 
|  | for i in range(lc,c-1) : | 
|  | shuf = shuf +"0" | 
|  | shuf = shuf + hex(x)[2] | 
|  | lc =c | 
|  | break | 
|  | lr = r | 
|  | lj = j | 
|  | #  print r,j,c,ptr[r,j,c] | 
|  | #  print | 
|  |  | 
|  | for r,j,c in sorted(ptr.keys()) : | 
|  | for y,x in ptr[r,j,c] : | 
|  | print r,j,c,y,x | 
|  | break | 
|  | """ |